Мне нужно позвонить другому контроллеру для того же URL-адреса в зависимости от промежуточного программного обеспечения. URL должен быть одинаковым, поэтому перенаправление в промежуточном программном обеспечении не вариант. Приведенный ниже пример кода, контроллеры для десятков маршрутов уже завершены, поэтому проверка значения сеанса здесь также не предусмотрена.
Пытался создать два разных промежуточных ПО (имеет / не имеет значение сеанса), но последняя группа маршрутов все равно перезаписывает предыдущую. Любая подсказка? Может быть, нужен другой подход?
route.php выглядит так:
Route::group(array('namespace' => 'Admin', 'prefix' => 'admin', 'middleware' => 'auth'), function () {
// set of default routes
Route::get('/', array('as' => 'admin', 'uses' => 'FirstController@index'))->middleware('admin');
Route::get('/profile', array('as' => 'profile', 'uses' => 'FirstController@profile'))->middleware('admin');
Route::group(array('middleware' => 'sessionhassomething'), function () {
// set of the same routes like above but overwritten if middleware validates
Route::get('/', array('as' => 'admin', 'uses' => 'SecondController@index'))->middleware('admin');
Route::get('/profile', array('as' => 'profile', 'uses' => 'SecondController@profile'))->middleware('admin');
});
});
SessionHasSomething промежуточное ПО :
class sessionHasSomething {
public function handle($request, Closure $next)
{
if(session()->has("something_i_need_to_be_set")) {
return $next($request);
}
// return what if not set, or ...?
}
}
Заранее спасибо!