2013-08-06 17 views
11

Ich habe eine Ressourcensteuerung Items:So rufen Sie Filter für erforderliche Resource Controller-Aktionen auf?

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

Und in Aktion [email protected] für neue Artikel zu schaffen, ich bin brauchen CSRF filter (und vielleicht Auth filter), bevor Aktionen mit Form zu aktivieren. Aber ich kann nicht schreiben

$this->beforeFilter('csrf') 

es funktioniert nicht. Es funktioniert, wenn ich diesen Anruf in Eltern __construct() des Controllers setze.

Was muss ich tun, um einige Filter direkt für Ressourcen-Controller-Aktionen aufzurufen?

Antwort

12

Sie sollten die Filter für bestimmte Aktionen nur nutzen können, indem sie es in der __construct() wie diese Einstellung:

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

    //rest of controller... 
} 

Hinweis - Sie können auch die Schlüsselwörter verwenden „nur“ und „außer“ und geben ein Array von Aktionsnamen zum Anwenden (oder Negieren) des Filters für mehrere Aktionen.

+1

'Only' Option hilft mir. Vielen Dank! – mikatakana

+0

Für Interessierte: http://laravel.com/docs/controllers#controller-filters erklärt die Verwendung von Filtern in einem Controller hinzufügen. – Sean

0

Sie können einfach Route::resource() Konstruktor verwenden. Verwenden Sie diesen Code:

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