web-dev-qa-db-fra.com

Obtenir Laravel 5 nom du contrôleur en vue

Notre ancien site Web CSS a été configuré pour que la balise body ait un identifiant du nom du contrôleur et une classe du nom de l'action, en utilisant Zend Framework 1. Nous passons maintenant à Laravel 5. J'ai trouvé un moyen de récupère le nom de l'action via la classe Route, mais ne trouve pas de méthode pour le nom du contrôleur. Je ne vois rien dans les documents Laravel comme celui-ci. Des idées?

C'est comme ça que vous faites avec l'action. Vous injectez la classe Route, puis appelez:

$route->getActionName().

Je cherche quelque chose de similaire pour les contrôleurs. J'ai vérifié toute la classe de route et je n'ai rien trouvé.

15
sehummel

Si votre présentation est un modèle de lame, vous pouvez créer un composeur de vues qui injecte ces variables dans votre présentation. Dans app/Providers/AppServiceProvider.php ajoutez quelque chose comme ceci:

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'));
    });
}

Vous aurez alors deux variables disponibles dans votre modèle de présentation: $controller et $action.

41
Martin Bean

J'utilise une solution simple. Vous pouvez tester et l'utiliser partout, ainsi que vos points de vue:

{{ dd(request()->route()->getAction()) }}
6
ivahidmontazer

Pour obtenir quelque chose comme PostController, essayez de suivre ...

preg_match('/([a-z]*)@/i', $request->route()->getActionName(), $matches);
$controllerName = $matches[1];

$ correspond [1] inclut le premier groupe alors que $ correspond [0] comprend tout ce qui correspond. Alors aussi le @ qui n'est pas désiré.

1
Ilario Engler