如何在函数beforeAction中打印出数据?我想在控制器中的每个操作之前进行一些验证,因此如果在beforeAction中发生某些情况,我应该打印出数据并阻止进一步执行,例如,JSON:
[
status: "error",
msg: "access denied"
]
我尝试将内部重定向到另一个控制器,但它不起作用。
public function beforeAction($action)
{
$request = Yii::$app->request;
if ( ! checkByToken($request->get('token')) && $this->getRoute() != 'web/abonent/token_error') {
\Yii::$app->runAction('web/abonent/token_error');
return true;
}
return parent::beforeAction($action); // TODO: Change the autogenerated stub
}
但也许有另一个这样做的概念。我只需要在任何操作之前检查条件并打印我们的结果或让操作执行。
答案 0 :(得分:2)
为防止进一步执行:
public function beforeAction($action) {
return false; // key point
}
在beforeAction中打印数据:
public function beforeAction($action) {
// set response format = json:
Yii::$app->response->format = Response::FORMAT_JSON;
// then, set the response data:
Yii::$app->response->data = [
'status' => 'error',
'msg' => 'access denied'
];
return false;
}
答案 1 :(得分:0)
我认为会更好
public function beforeAction($action)
{
$request = Yii::$app->request;
if ( ! checkByToken($request->get('token')) && $this->getRoute() != 'web/abonent/token_error') {
$action = 'error';
}
return parent::beforeAction($action); // TODO: Change the autogenerated stub
}
动作名称必须是'actionError'