如何解决我可以在laravel中使用2次或多次使用相同的控制器名称吗?
我在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']);
解决方法
有2种不同的use语句。
use App\Http\Controllers\my_controller1\Login;
和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;
但是,不需要两个具有相同名称的控制器,因为这表明它们对同一件事负责,并且很可能可以合并。
此外,您的命名似乎有点偏离;考虑将camelCase用于文件夹名称(例如,\customControllers\
而不是\my_controller1\
)和命名控制器LoginController
而不是Login
(see naming conventions for Laravel)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。