首页 文章

ZF3:如何从动作函数发送JSON

提问于
浏览
0

当我想从动作函数发送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 \ View \ Exception \ RuntimeException:Zend \ View \ Renderer \ PhpRenderer :: render:无法呈现模板“application / login / login”;解析器无法解析为/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 \ View \ Renderer \ PhpRenderer-> render()#1 / var / www / html / 31juegos / vendor / zendframework / zend-mvc / src / View / Http / DefaultRenderingStrategy.php(105):Zend \ View \ View-> render(对象(Zend \ View \ Model \ JsonModel))#2 / var / www / html / 31juegos / vendor / zendframework / zend-eventmanager / src / EventManager.php(322):Zend \ Mvc \ View \ Http \ DefaultRenderingStrategy-> render(Object(Zend \ Mvc \ MvcEvent))#3 / var / www / html / 31juegos / vendor / zendframework / zend-eventmanager / src / EventManager.php(171):Zend \ EventManager \ EventManager-> triggerListeners(Object(Zend \ Mvc \ MvcEvent))#4 / var / www / html / 31juegos / vendor / zendframework / zend-mvc / src / View / Http / DefaultRenderingStrategy.php(123):第494行/var/www/html/31juegos/vendor/zendframework/zend-view/src/Renderer/PhpRenderer.php中的Zend \ EventManager \ Ev

我究竟做错了什么?相同的代码在Zend Framework 2.4中运行良好 . 我正在使用php7.0 .

1 回答

  • 1

    当请求作为常规网页时,响应是网页(而不是JSON) . 如果请求来自AJAX,那么响应是JSON(并且它不需要视图,这是您正在获得的错误) .

相关问题