Мне нужно отобразить переменную (взятую из пользовательской модели) для всех маршрутов в моем приложении, которая не влияет на маршрут, на котором она отображается. Таким образом, home / variable будет отображать одну и ту же домашнюю страницу независимо от этой переменной для всех пользователей. Если пользователь просто заходит в myapp / home, переменная добавляется в URL как myapp / home / variable.
У меня уже есть желаемый результат с приведенным ниже в web.php, но я должен делать это с каждым маршрутом, поэтому, если мое приложение имеет две страницы, я делаю одно и то же перенаправление для / home и / example. Это также означает, что я должен добавлять переменную всякий раз, когда я перенаправляю с другого контроллера.
Route::get( '/example',function(){
$var = Auth::user()->thevariable;
return redirect('example/'.$var);
});
Route::get( 'example/{var}','ExampleController@index');
// changes the url from example, to example/variable, and also returns
the correct controller / view if directed to example/variable.
В моих контроллерах я делаю что-то подобное, чтобы перенаправить при необходимости:
return redirect()->action('HomeController@index',$user->thevariable)
//I can also just redirect to the /home url and the variable is added
automatically, but this messes up passing session data.
Можно ли сделать это лучше с помощью композитора, промежуточного программного обеспечения или даже через RouteServiceProvider? Если кто-нибудь и укажет мне правильное направление, это будет с благодарностью (Laravel 5.4).