Получить текущий маршрут внутри контроллера Laravel - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть несколько маршрутов в web.php:

Route::get('/','PagesController@index');

Route::get('/contact','PagesController@contact');

и так далее ...

Мне нужно получить в моем PagesController текущий «модуль» (индекс, контакт или что-то еще).

Код контроллера:

   class PagesController extends Controller
   {
    public function index()
    {
       $menu = new Menu();

       $links = $menu->getMenu();

       //$header=url()->current(); // returns the full url, e.g. http://test.com/
       //$header=Route::current(); // error: Class Route not found

       return view("index",['links'=>$links,'header'=>$header]);
    }
}

Например, заголовок $ должен быть равен "/" внутри PagesController@index и $header = "contact" внутри PagesController@contact.

Мне нужно универсальное решение для всех модулей, которые будут у меня в будущем.

Большое спасибо!

1 Ответ

0 голосов
/ 03 ноября 2018

У меня не было возможности проверить это, однако вы должны быть в состоянии достичь этого с помощью следующего:

Route::get('/{page?}', function($page = 'index') {
    return app('App\Http\Controllers\PageController')->{$page}($page);
});

По сути, это установка маршрута для необязательной переменной $page. Если имя страницы не передается (например, contact), по умолчанию используется значение index.

.

Наконец, мы используем помощник app() для вызова PageController, а затем используем синтаксис ->{$page}() для вызова метода динамического контроллера (в случае по умолчанию index).

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...