2019年5月

经过测试,如果控制器方法 return 字符串,控制器外的 response::getContent 能够获取到最终需要输出的内容,但是 return 数组再通过 afterExecuteRoute 进行转化,如果不使用 dispatcher::setReturnedValue 方法,会导致控制器外 response::getContent 获取不到任何内容。

    public function afterExecuteRoute()
    {
        $return = $this->dispatcher->getReturnedValue();
        if (!$return instanceof $this->response && is_array($return)) {
            $this->view->disable();
            $this->response->setJsonContent($return, JSON_UNESCAPED_UNICODE);
            $this->dispatcher->setReturnedValue($this->response->getContent());
        }
        return $this->response;
    }