我在laravel 8项目的两个不同文件夹中有相同的控制器名称(假设Login.php(。在路由中,如果我以以下方式使用它们,它会显示错误。
use AppHttpControllersmy_controller1Login;
use AppHttpControllersmy_controller2Login;
错误看起来像
Symfony\Component\ErrorHandler\Error\FatalError
无法使用App\Http\Controllers\my_controller2\Login作为登录名,因为该名称已在使用
如果我以以下方式使用,它不会显示错误:
use AppHttpControllersmy_controller1Login;
和
Route::get('/loginA',[AppHttpControllersmy_controller2Login::class,'abc']);
Route::get('/loginB',[Login::class,'abc']);
注意:文件夹和控制器名称仅供假设
有两种不同的use语句。CCD_ 2和CCD_ 3
如果在同一文件中同时使用其中一个,则需要对其进行别名。
use AppHttpControllersmy_controller2Login as Login2;
您可以通过像这样导入它们来给它们不同的名称
use AppHttpControllersmy_controller1Login as Login1;
use AppHttpControllersmy_controller2Login as Login2;
然而,不应该有两个同名的控制器,因为这表明它们负责相同的事情,并且可能会合并。
此外,您的命名似乎有点偏离;考虑对文件夹名称使用camelBase(例如customControllers
而不是my_controller1
(,并仅将控制器命名为LoginController
而不是Login
(请参见Laravel的命名约定(。