当我想从动作函数发送json对象而不是视图时,我遇到了问题。
我已经像我这样配置了我的/config/modules.config.php ......
return [
//...
'view_manager' => [
//...
'strategies' => [
'ViewJsonStrategy',
],
],
];
当我尝试从我的动作函数中返回一个JSON对象时......
public function loginAction(){
$request = $this->getRequest();
$log = new \File\LogWriter();
$log->writeLog(get_class($this) . "::" . __FUNCTION__ . ": Dentro de loginAction()");
$params = json_decode(file_get_contents('php://input'),true);
$email = $params["email"];
$password = $params["password"];
$log->writeLog(get_class($this) . "::" . __FUNCTION__ . ": email: " . $email . " password: " . $password);
return new JsonModel([
"result" => 0
]);
}
我有这个错误......
致命错误:未捕获 Zend的\查看\异常\ RuntimeException的: Zend \ View \ Renderer \ PhpRenderer :: render:无法呈现模板 “应用程序/登录/登录”;解析器无法解析为 档案 /var/www/html/31juegos/vendor/zendframework/zend-view/src/Renderer/PhpRenderer.php:494
堆栈跟踪: #0 /var/www/html/31juegos/vendor/zendframework/zend-view/src/View.php(207): 的Zend \视图\渲染\ PhpRenderer->渲染() #1 /var/www/html/31juegos/vendor/zendframework/zend-mvc/src/View/Http/DefaultRenderingStrategy.php(105): 的Zend \视图\视图 - >呈现(对象(的Zend \视图\模型\ JsonModel))
#2 /var/www/html/31juegos/vendor/zendframework/zend-eventmanager/src/EventManager.php(322): 的Zend \的mvc \视图\ HTTP \ DefaultRenderingStrategy->呈现(对象(的Zend \的mvc \ MvcEvent))
#3 /var/www/html/31juegos/vendor/zendframework/zend-eventmanager/src/EventManager.php(171): 的Zend \ eventmanager进行\ EventManager-> triggerListeners(对象(的Zend \的mvc \ MvcEvent))
#p /#/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / Zend \ EventManager \ Ev in /var/www/html/31juegos/vendor/zendframework/zend-view/src/Renderer/PhpRenderer.php 的 在线 494
我做错了什么?相同的代码在Zend Framework 2.4中运行良好。我正在使用php7.0。
答案 0 :(得分:1)
当请求作为常规网页时,响应是网页(不是JSON)。 如果请求来自AJAX,则响应是JSON(并且它不需要视图,这是您正在获得的错误)。