ZF3: как отправить JSON из функции действия

У меня проблема, когда я хочу отправить объект 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
    ]);             
}

У меня такая ошибка ...

Неустранимая ошибка: Uncaught 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 (Object (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): Zend \ EventManager \ Ev в / var / www / html / 31juegos / vendor / zendframework / zend-view / src / Renderer / PhpRenderer.php в строке 494

Что я делаю неправильно? Тот же код отлично работает в Zend Framework 2.4. Я использую php7.0.


person José Carlos    schedule 28.04.2017    source источник


Ответы (1)


Если запрос представляет собой обычную веб-страницу, то ответ представляет собой веб-страницу (не JSON). Если запрос поступает от AJAX, то ответом является JSON (и для него не требуется представление, что и является ошибкой, которую вы получаете).

person Ethan Aleman-Meza    schedule 28.04.2017