我在有方法测试的公共文件夹中有控制器
public function actionTest() {
$s = "sdfs";
return $s;
}
Run Code Online (Sandbox Code Playgroud)
并为这个动作设置 afterAction,例如:
public function afterAction($action) {
if ($action->id == "test") {
echo 'here afterActioin';
}
}
Run Code Online (Sandbox Code Playgroud)
我从另一个控制器调用测试操作:
public function actionTest3() {
echo Yii::$app->runAction('travia/test');
}
Run Code Online (Sandbox Code Playgroud)
问题是当我在浏览器中调用 test3 时没有显示但如果我评论 afterAction 方法将返回。问题出在哪里 afterAction 的行为是什么,不允许我的行动返回某些东西?
Yii2 文档
在执行操作后立即调用此方法。该方法将触发 EVENT_AFTER_ACTION 事件。该方法的返回值将用作操作返回值。如果您覆盖此方法,您的代码应如下所示:
public function afterAction($action, $result)
{
$result = parent::afterAction($action, $result);
// your custom code here
return $result;
}
Run Code Online (Sandbox Code Playgroud)