2013-08-06 8 views
11

Ho un regolatore di risorsa Items:Come chiamare il filtro per le azioni necessarie del controller risorse?

Route::resource('items', 'ItemsController'); 

E in azione [email protected] per la creazione di nuovo elemento sto necessario attivare il CSRF filter (e forse Auth filter) prima di azioni con modulo. Ma non posso scrivere

$this->beforeFilter('csrf') 

non funziona. Funziona quando inserisco questa chiamata nel controllore genitore __construct().

Cosa devo fare per chiamare alcuni filtri direttamente per le azioni del controller risorse?

risposta

12

Si dovrebbe essere in grado di utilizzare i filtri per le azioni specifiche solo impostando nel __construct() come questo:

class ItemsController extends BaseController 
{ 
    public function __construct() 
    { 
     $this->beforeFilter('csrf', array('on' => 'store')); 
    } 

    //rest of controller... 
} 

Nota - È inoltre possibile utilizzare le parole chiave "solo" e "tranne" e superare un matrice di nomi di azioni per applicare (o negare) il filtro per più di un'azione.

+1

'only' opzione mi aiuta. Grazie! – mikatakana

+0

Per chi è interessato: http://laravel.com/docs/controllers#controller-filters spiega l'utilizzo dell'aggiunta di filtri in un controller. – Sean

0

È possibile utilizzare normalmente il costruttore Route::resource(). Utilizzare questo codice:

Route::resource('items', 'ItemsController', ['before' => 'csrf']); 
Problemi correlati