2015-04-09 20 views
12

Nasz stary CSS witryny został tak skonfigurowany, że znacznik body miał identyfikator kontrolera i klasę nazwy działania, używając Zend Framework 1. Teraz przełączamy się na Laravel 5 Znalazłem sposób na uzyskanie nazwy akcji przez klasę Route, ale nie mogę znaleźć metody dla nazwy kontrolera. W dokumentach Laravel nie widzę niczego takiego. Jakieś pomysły?Zdobądź nazwę kontrolera Laravel 5 w widoku

Tak właśnie postępuje się z działaniem. Wstrzykujesz klasę Route, a następnie dzwonisz pod numer:

$route->getActionName().

Szukam czegoś podobnego do kontrolerów. Sprawdziłem całą klasę trasy i nic nie znalazłem.

Odpowiedz

27

Jeśli twój układ jest szablonem Blade, możesz utworzyć kompozytor widoku, który wstrzykuje te zmienne do twojego układu. W app/Dostawców/AppServiceProvider.php dodać coś takiego:

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

Będziesz wtedy miał dwie zmienne dostępne w szablonie układ: $controller i $action.

+0

mi się podoba. Nie jest to dokładnie to, czego potrzebuję, ale widzę, co robisz i mogę to zaadaptować. Dzięki! – sehummel

+0

Udało się świetnie. Dzięki @Martin Bean! – sehummel

+0

@sehummel Awesome! Cieszę się, że udało mi się skierować cię we właściwym kierunku. –

3

Używam prostego rozwiązania. Można testować i używać go wszędzie, także swoje poglądy:

{{ dd(request()->route()->getAction()) }} 
+2

Tego właśnie szukałem !! –

+0

Ale to daje długi ciąg '' App \ Http \ Controllers \ LocalLeadsSearch @ index "' i chcę tylko 'LocalLeadsSearch' –

+2

@AnujTBE TBE Możesz łatwo oddzielić ciąg dowcip explode() PHP;) – ivahidmontazer

1

Aby dostać coś PostController spróbować następujących ...

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

$ matches [1] zawiera pierwszą grupę podczas $ matches [ 0] obejmuje wszystko dopasowane. Więc także @, który nie jest pożądany.

0

będę po prostu użyć jako mieszek

$request->route()->getActionMethod()

Powiązane problemy