Laravel 8 中的路由组命名空间
Route group namespace in Laravel 8
我正在尝试在 laravel
中定义命名空间
旧版本
Route::group('namespace' => 'RoleA'], function() {
Route::get('/', 'HomeController@index']);
// call RoleA/HomeController
});
laravel 8
use App\Http\Controllers\RoleA\HomeController;
use App\Http\Controllers\RoleB\HomeController;
// return error => HomeController already in use
Route::group('namespace' => 'RoleA'], function() {
Route::get('/', [HomeController::class, 'index']);
// call RoleA/HomeController
});
Route::group('namespace' => 'RoleB'], function() {
Route::get('/', [HomeController::class, 'index']);
// still call RoleA/HomeController
});
在 Laravel 8 中是否有其他使用命名空间的方法或正确方法?
编辑,抱歉问题有歧义
我的意思是像旧版本一样,在定义命名空间时
类似这样,或者看上面的旧版本
Route::group('namespace' => 'RoleB'], function() {
Route::get('/', [RoleB/HomeController::class, 'index']);
// will call RoleB/HomeController
});
有没有办法实现类似上面代码的东西?
对于return错误,按如下方式导入控制器(不能导入同名的类。所以你应该使用别名)
use App\Http\Controllers\RoleA\HomeController as HomeControllerA;
use App\Http\Controllers\RoleB\HomeController as HomeControllerB;
然后您可以创建路由组 this
Route::prefix('RoleA')->group(function () {
Route::get('/', function () {
// Matches The "/RoleA" URL
});
});
您可以使用命名空间如下
Route::group(['namespace' => 'HomeControllerA'], function()
{
Route::get('/RoleA', [HomeController::class, 'index']);
}
我认为 laravel 放弃该功能,因为在 laravel 8 中,控制器将是面向对象的 class
Laravel 路由 7.* 文档。
Laravel 路由 8.* 文档。
导入控制器如下-
use App\Http\Controllers\Admin\TestController as TestControllerAdmin;
use App\Http\Controllers\Employee\TestController as TestControllerEmployee;
Route::group(["prefix"=>"admin"], function(){
Route::get('index', [TestControllerAdmin::class, 'index']);
});
Route::group(["prefix"=>"employee"], function(){
Route::get('index', [TestControllerEmployee::class, 'index']);
});
我正在尝试在 laravel
中定义命名空间旧版本
Route::group('namespace' => 'RoleA'], function() {
Route::get('/', 'HomeController@index']);
// call RoleA/HomeController
});
laravel 8
use App\Http\Controllers\RoleA\HomeController;
use App\Http\Controllers\RoleB\HomeController;
// return error => HomeController already in use
Route::group('namespace' => 'RoleA'], function() {
Route::get('/', [HomeController::class, 'index']);
// call RoleA/HomeController
});
Route::group('namespace' => 'RoleB'], function() {
Route::get('/', [HomeController::class, 'index']);
// still call RoleA/HomeController
});
在 Laravel 8 中是否有其他使用命名空间的方法或正确方法?
编辑,抱歉问题有歧义
我的意思是像旧版本一样,在定义命名空间时 类似这样,或者看上面的旧版本
Route::group('namespace' => 'RoleB'], function() {
Route::get('/', [RoleB/HomeController::class, 'index']);
// will call RoleB/HomeController
});
有没有办法实现类似上面代码的东西?
对于return错误,按如下方式导入控制器(不能导入同名的类。所以你应该使用别名)
use App\Http\Controllers\RoleA\HomeController as HomeControllerA;
use App\Http\Controllers\RoleB\HomeController as HomeControllerB;
然后您可以创建路由组 this
Route::prefix('RoleA')->group(function () {
Route::get('/', function () {
// Matches The "/RoleA" URL
});
});
您可以使用命名空间如下
Route::group(['namespace' => 'HomeControllerA'], function()
{
Route::get('/RoleA', [HomeController::class, 'index']);
}
我认为 laravel 放弃该功能,因为在 laravel 8 中,控制器将是面向对象的 class
Laravel 路由 7.* 文档。
Laravel 路由 8.* 文档。
导入控制器如下-
use App\Http\Controllers\Admin\TestController as TestControllerAdmin;
use App\Http\Controllers\Employee\TestController as TestControllerEmployee;
Route::group(["prefix"=>"admin"], function(){
Route::get('index', [TestControllerAdmin::class, 'index']);
});
Route::group(["prefix"=>"employee"], function(){
Route::get('index', [TestControllerEmployee::class, 'index']);
});