微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我可以在laravel中使用2次或多次使用相同的控制器名称吗?

如何解决我可以在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而不是Loginsee naming conventions for Laravel)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。