所以我在一个全局路由组中定义了我的路由,在里面我还有另外两个组,一个是中间件"员工",一个是中间件"admin",每个组都有自己的控制器。
这两个组有一个具有相同url "/document"的路由索引,但每个组执行不同的控制器。
我的问题是最后一个定义的组总是覆盖前一个组的索引路由。
想要的行为是,如果员工中间件有效,则执行empController@index操作,否则如果管理控制器有效,则执行adminController@index操作,同时为两者保留相同的 URL,并且我必须将每个路由保留在单独的组中,并且两个路由必须具有相同的 URL。
我怎样才能做到这一点?谢谢
这是两条相互冲突的路线
Route::group(['as' => 'admin.', 'middleware' => ['admin']], function() { Route::get('/document', 'AdminDocumentController@index')->name('document.index'); .... });
Route::group(['middleware' => ['employee']], function() { Route::get('/document', 'DocumentController@index')->name('document.index'); .... });
听起来您希望根据请求是来自员工还是管理员来执行不同的操作。我的建议是为此提供一个 url、一个路由和一个控制器功能。
在控制器函数中(或者在将其结果附加到请求的中间件中,如果你想这样做(,有逻辑来调用一个或另一个方法。
PersonController.php
中的伪示例:
if(Auth::user()->isAdmin()) {
// return an admin view or perform an admin function
else {
// return an employee view or perform an employee function
}
其中isAdmin()
函数是您在User.php
等模型中定义的内容。