Получить имя контроллера Laravel 5
Наш старый CSS-сайт был настроен так, что тег body
имел идентификатор имени контроллера и класс имени действия, используя Zend Framework 1. Теперь мы переходим на Laravel 5. Я нашел способ для получения имени действия через класс Route
, но не может найти метод для имени контроллера. Я ничего не вижу в документах Laravel, подобных этому. Любые идеи?
Вот как вы это делаете. Вы вводите класс Route, а затем вызываете:
$route->getActionName()
.
Я ищу что-то подобное для контроллеров. Я проверил весь класс маршрута и ничего не нашел.
Ответы
Ответ 1
Если ваш макет - это шаблон Blade, вы можете создать композитор представления, который вводит эти переменные в ваш макет. В app/Providers/AppServiceProvider.php добавьте что-то вроде этого:
public function boot()
{
app('view')->composer('layouts.master', function ($view) {
$action = app('request')->route()->getAction();
$controller = class_basename($action['controller']);
list($controller, $action) = explode('@', $controller);
$view->with(compact('controller', 'action'));
});
}
В вашем шаблоне макета будут доступны две переменные: $controller
и $action
.
Ответ 2
Я использую простое решение. Вы можете тестировать и использовать его повсюду, а также ваши взгляды:
{{ dd(request()->route()->getAction()) }}
Ответ 3
Я просто буду использовать как ниже
$request->route()->getActionMethod()
Ответ 4
Чтобы получить что-то вроде PostController, попробуйте выполнить...
preg_match('/([a-z]*)@/i', $request->route()->getActionName(), $matches);
$controllerName = $matches[1];
$matches [1] включает первую группу, в то время как $matches [0] включает все согласованные. Так же и @, что нежелательно.