Получить имя контроллера 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] включает все согласованные. Так же и @, что нежелательно.