Laravel 5.4路由相同的前缀组但不同的中间件给出错误

Rak*_*Roy 4 php routing laravel-5

我需要在同一前缀管理器下的所有路由,其中一个中间件用于guest manager_guest,另一个用于登录用户manager_auth.下面的代码是我的路由web.php文件

还有其他方法吗?

我的路线:

在此输入图像描述

执行后出错 php artisan route:list

Route::prefix('manager')->group(['middleware' => 'manager_guest'], function () {
    Route::get('/register', 'Manager\RegisterController@showRegister')->name('manager.register.create');
    Route::post('/register', 'Manager\RegisterController@register')->name('manager.register.store');
    Route::get('/login', 'Manager\LoginController@showLogin')->name('manager.login.create');
    Route::post('/login', 'Manager\LoginController@login')->name('manager.login');
});

Route::prefix('manager')->group(['middleware' => 'manager_auth'], function () {
    Route::post('/logout', 'Manager\LoginController@logout')->name('manager.logout');
    Route::get('/profile', 'Manager\PageController@profile')->name('manager.profile');
});
Run Code Online (Sandbox Code Playgroud)

cba*_*ier 10

试试这个

Route::group(['prefix' => 'manager',  'middleware' => 'manager_guest'], function() {

    });
Run Code Online (Sandbox Code Playgroud)


lou*_*her 6

您可以像这样“分解”您的代码:

Route::prefix('manager')->group(function () {
    Route::middleware(['manager_guest'])->group(function () {
        // These will be prefixed with "manager" and assigned the "manager_guest" middleware
    });

    Route::middleware(['manager_auth'])->group(function () {
        // These will be prefixed with "manager" and assigned the "manager_auth" middleware
    });

    // These will just be prefixed with "manager"
});
Run Code Online (Sandbox Code Playgroud)

我注意到您所有的控制器都位于子命名空间管理器中。您可以链接方法并使路由文件更加整洁。例如:

Route::prefix('manager')->namespace('Manager')->group(function () {
    Route::middleware(['manager_guest'])->group(function () {
        Route::get('register', 'RegisterController@showRegister')->name('mananger.register.create');
    });

    Route::middleware(['manager_auth'])->group(function () {
        Route::get('profile', 'PageController@profile')->name('mananger.profile');
    });
});
Run Code Online (Sandbox Code Playgroud)