2013-08-06 19 views
11

我有一個資源控制器Items:之前表單操作如何調用所需資源控制器操作的篩選器?

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

而且在創建新的項目我是行動[email protected]需要激活CSRF filter(也許Auth filter)。但我不能寫

$this->beforeFilter('csrf') 

它不工作。當我將此調用放在父控制器的__construct()中時,它起作用。

我需要做些什麼來直接調用一些過濾器來執行資源控制器操作?

回答

12

您應該能夠使用的具體行動過濾器僅由__construct()這樣設置的:

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

    //rest of controller... 
} 

注 - 您也可以使用關鍵字「唯一」和「除外」,並通過一個動作名稱數組,以應用(或否定)用於多個動作的過濾器。

+1

'only'選項可以幫助我。謝謝! – mikatakana

+0

對於那些感興趣的人:http://laravel.com/docs/controllers#controller-filters解釋了在控制器中添加過濾器的用法。 – Sean

0

您可以正常使用Route::resource()構造函數。使用此代碼:

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