yii2 中的 afterAction 和返回方法?

moh*_*sen 1 php yii2

我在有方法测试的公共文件夹中有控制器

  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 的行为是什么,不允许我的行动返回某些东西?

Ngô*_*hao 6

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)