laravel - маршруты с одинаковыми URL-адресами и различными промежуточными программами и различными контроллерами перекрывают друг друга - PullRequest
0 голосов
/ 30 августа 2018

так что мои маршруты определены в глобальной группе маршрутов, и внутри у меня есть две другие группы, с промежуточным программным обеспечением 'employee' и с промежуточным программным обеспечением 'admin', и у каждого из них есть свои собственные контроллеры.

Две группы имеют индекс маршрута с одинаковым URL-адресом "/ document", но каждая из них выполняет свой контроллер.

Моя проблема - индексный маршрут, который последняя определенная группа всегда переопределяет предыдущую.

Требуемое поведение состоит в том, что, если промежуточное программное обеспечение сотрудника является действительным, выполните действие empController @ index, в противном случае, если контроллер admin действителен, выполните действие adminController @ index, сохраняя один и тот же URL для обоих, и я должен сохранять каждый маршрут в отдельная группа, и оба маршрута должны иметь одинаковый URL.

Как я могу достичь этого? Спасибо

вот два противоречивых маршрута

Route::group(['as' => 'admin.', 'middleware' => ['admin']], function() { Route::get('/document', 'Admin\DocumentController@index')->name('document.index'); .... });
Route::group(['middleware' => ['employee']], function() { Route::get('/document', 'DocumentController@index')->name('document.index'); .... });

1 Ответ

0 голосов
/ 30 августа 2018

Звучит так, будто вы хотите выполнять различные действия в зависимости от того, поступает ли запрос от сотрудника или администратора. Для этого я бы предложил один 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.

...