在路线过滤之前?

时间:2014-03-31 13:57:36

标签: laravel laravel-4

我的路线上需要before filter,我的RESTful控制器:

这就是我所拥有的:

Route::controller('gateway', array('before' => 'csrf', 'uses' => 'GatewayController'));

我收到错误:

'ErrorException' with message 'Array to string conversion'

知道怎么做吗?

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

// Controller : GatewayController
public function __construct()
{
    $this->beforeFilter( 'csrf', array( 'on' => array( 'post' ) ) );
}

将此__construct()方法放入RESTful控制器中。此处'on' => array( 'post' )用于表示,仅应对POST个请求进行过滤,您可以在此处添加其他HTTP方法。 controller类中Router方法的签名如下:

public function controller($uri, $controller, $names = array()) { ... }

在这种情况下,第二个参数必须是String而不是Array。在您的问题中,给出的例子是:

Route::controller('gateway', array('before' => 'csrf', 'uses' => 'GatewayController'));

此处,第二个参数为Array,因此发生错误'ErrorException' with message 'Array to string conversion'

您也可以将__construct()方法放在BaseController内,这样您就不必在每个控制器中使用它。或者,您也可以使用group(如果您有多条路线),如下所示:

Route::group(array('before' => 'csrf'), function(){
    Route::controller('gateway', 'GatewayController');  
});