我的路线上需要before filter
,我的RESTful
控制器:
这就是我所拥有的:
Route::controller('gateway', array('before' => 'csrf', 'uses' => 'GatewayController'));
我收到错误:
'ErrorException' with message 'Array to string conversion'
知道怎么做吗?
答案 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');
});