2015-02-21 12 views
17

Stacker! Attualmente sto imparando laravel5 e lo adoro, ma sto lottando con una cosa. Dal laravel 5 abbiamo Middleware che possiamo usare in funzione di costrutto del controller, in questo modo:Laravel 5 - Definizione del middleware per più percorsi nel file di controller

file di controller:

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

Ora quello che voglio è quello di definire QUI^(non nel file di vie aeree) middleware di essere utilizzato in più viste, come "crea", "modifica" e "mostra". definizione

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

Purtroppo non funziona. Preferirei non usare percorsi. Qualche idea, cari amici?

+0

Ciao, come faccio a utilizzare questo per due ruoli, diciamo Admin hanno accesso a tutti i metodi e manager hanno accesso solo per creare, modificare , mostra come posso farlo? come scrivere il middleware per qualcosa di simile. –

risposta

26

semplicemente passare una matrice invece di una stringa con | delimitatore:

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

Ciao, come lo uso per due ruoli, diciamo che l'Admin ha accesso a tutti i metodi e Manager ha solo accesso per creare, modificare, mostrare come posso farlo? come scrivere il middleware per qualcosa di simile. –

+1

@ChanukaAsanka Basta chiamare '$ this-> middleware()' due volte – lukasgeiter

+0

ok .. vuoi dire che dovrei avere due middlewar chiamato Admin & Manager. ma non so come gestire il metodo in handle .. handle di funzione pubblica ($ request, Closure $ next) { if (\ Auth :: user() -> role == 'Manager') { return true; } return $ next ($ request); } puoi fornire un esempio. in pratica non ho bisogno di dare il permesso di cancellare per Manager –