我可以在 laravel 中使用相同的控制器名称 2 次或更多次吗?
Can I use same controller name 2 or more times in laravel?
我在 laravel 8 项目的 2 个不同文件夹中有相同的控制器名称(假设 Login.php)。在路由中,如果我按以下方式使用它们,它会显示错误。
use App\Http\Controllers\my_controller1\Login;
use App\Http\Controllers\my_controller2\Login;
错误看起来像
Symfony\Component\ErrorHandler\Error\FatalError
Cannot use App\Http\Controllers\my_controller2\Login as Login because
the name is already in use
如果我用下面的方法不会报错:
use App\Http\Controllers\my_controller1\Login;
和
Route::get('/loginA',[App\Http\Controllers\my_controller2\Login::class,'abc']);
Route::get('/loginB',[Login::class,'abc']);
注意:文件夹和控制器名称仅供假设。
There is 2 different use statements. use App\Http\Controllers\my_controller1\Login;
and use App\Http\Controllers\my_controller2\Login;
如果您在同一个文件中同时使用它们,则需要为其中之一设置别名。
use App\Http\Controllers\my_controller2\Login as Login2;
你可以通过像这样导入它们来给它们起不同的名字
use App\Http\Controllers\my_controller1\Login as Login1;
use App\Http\Controllers\my_controller2\Login as Login2;
但是,不需要有两个同名的控制器,因为这表明它们负责同一件事并且可能可以合并。
还有,你的命名好像有点不对劲;考虑对文件夹名称使用驼峰命名法(例如 \customControllers\
而不是 \my_controller1\
),并将控制器命名为 LoginController
而不是 Login
()。
我在 laravel 8 项目的 2 个不同文件夹中有相同的控制器名称(假设 Login.php)。在路由中,如果我按以下方式使用它们,它会显示错误。
use App\Http\Controllers\my_controller1\Login;
use App\Http\Controllers\my_controller2\Login;
错误看起来像
Symfony\Component\ErrorHandler\Error\FatalError
Cannot use App\Http\Controllers\my_controller2\Login as Login because the name is already in use
如果我用下面的方法不会报错:
use App\Http\Controllers\my_controller1\Login;
和
Route::get('/loginA',[App\Http\Controllers\my_controller2\Login::class,'abc']);
Route::get('/loginB',[Login::class,'abc']);
注意:文件夹和控制器名称仅供假设。
There is 2 different use statements.
use App\Http\Controllers\my_controller1\Login;
anduse App\Http\Controllers\my_controller2\Login;
如果您在同一个文件中同时使用它们,则需要为其中之一设置别名。
use App\Http\Controllers\my_controller2\Login as Login2;
你可以通过像这样导入它们来给它们起不同的名字
use App\Http\Controllers\my_controller1\Login as Login1;
use App\Http\Controllers\my_controller2\Login as Login2;
但是,不需要有两个同名的控制器,因为这表明它们负责同一件事并且可能可以合并。
还有,你的命名好像有点不对劲;考虑对文件夹名称使用驼峰命名法(例如 \customControllers\
而不是 \my_controller1\
),并将控制器命名为 LoginController
而不是 Login
(