2015-02-21 29 views
17

Układarki! Obecnie uczę się laravel5 i kocham to, ale walczę z jedną rzeczą. Od laravel 5 mamy Middleware, które możemy wykorzystać w funkcji konstruktu sterownika, na przykład:Laravel 5 - Definiowanie oprogramowania pośredniego dla wielu tras w pliku kontrolera

plik Kontroler:

public function __construct() 
{ 
    $this->middleware('admin', ['only' => 'create']); 
} 

Teraz to, co chcę jest zdefiniowanie TUTAJ^(nie w pliku tras) middleware być używane w wielu widokach, np. "utwórz", "edytuj" i "pokaż". Definiowanie:

Niestety nie działa. Wolałbym nie używać tras. Jakieś pomysły, drodzy przyjaciele?

+0

Cześć, jak mogę wykorzystać to do dwóch ról, powiedzmy Administrator ma dostęp do wszystkich metod i Menedżer mieć dostęp do tworzenia tylko, edytować , pokaż, jak mogę to zrobić? jak napisać oprogramowanie pośredniczące do czegoś takiego. –

Odpowiedz

26

Wystarczy przekazać tablicę zamiast napisu z | separatora:

public function __construct() 
{ 
    $this->middleware('admin', ['only' => ['create', 'edit', 'show']]); 
} 
+0

Witam, jak używać tego dla dwóch ról, powiedzmy, że Administrator ma dostęp do wszystkich metod, a Menedżer ma tylko dostęp do tworzenia, edytowania, pokazywania, jak mogę to zrobić? jak napisać oprogramowanie pośredniczące do czegoś takiego. –

+1

@ChanukaAsanka Po prostu wywołaj '$ this-> middleware()' twice – lukasgeiter

+0

ok .. masz na myśli, że powinieneś mieć dwie środkowe zwane Admin & Manager. ale nie wiem jak sobie z tym poradzić w metodzie obsługi .. uchwyt funkcji publicznej ($ request, zamknięcie $ next) { if (\ Auth :: user() -> role == 'Manager') { return true; } return $ next ($ request); } Czy możesz podać przykład. zasadniczo nie muszę udzielać zgody na usuwanie dla menedżera –