【发布时间】:2021-01-19 16:33:24
【问题描述】:
我在 laravel 8 项目的 2 个不同文件夹中有相同的控制器名称(假设 Login.php)。如果我按照以下方式使用它们,在路线中会显示错误。
use App\Http\Controllers\my_controller1\Login;
use App\Http\Controllers\my_controller2\Login;
错误看起来像
Symfony\Component\ErrorHandler\Error\FatalError
不能使用 App\Http\Controllers\my_controller2\Login 作为登录,因为 该名称已被使用
如果我按以下方式使用它不会显示错误:
use App\Http\Controllers\my_controller1\Login;
和
Route::get('/loginA',[App\Http\Controllers\my_controller2\Login::class,'abc']);
Route::get('/loginB',[Login::class,'abc']);
注意:文件夹和控制器名称仅作假设。
【问题讨论】:
-
您可以为控制器命名您想要的名称,但您的
use语句是一个别名,因此您将这两个控制器都别名为Login,您不能这样做,因为名称已经存在在第一个别名之后...您必须将第二个别名别名为不同的名称 -
你为控制器更改了
namespace吗? -
@lagbox 有 2 种不同的
use语句。use App\Http\Controllers\my_controller1\Login;和use App\Http\Controllers\my_controller2\Login; -
再次 ...
use语句是一个“别名” ...use App\Http\Controllers\my_controller1\LoginISuse App\Http\Controllers\my_controller1\Login as Login;... 这就是该语句的作用 ... 所以你的 use 语句都是试图将每个中的Login控制器别名为Login,在第一个使用语句Login已经使用之后,您不能这样做(如错误所示) -
@noor 是的,2 个控制器有不同的命名空间
标签: php laravel routes laravel-controller