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é.
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
.
J'utilise une solution simple. Vous pouvez tester et l'utiliser partout, ainsi que vos points de vue:
{{ dd(request()->route()->getAction()) }}
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é.