Получить текущий маршрут внутри контроллера Laravel

У меня есть несколько маршрутов в 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,

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

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

0

Решение

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

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

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

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector