Próbuję nauczyć się ZF2. Mam stronę, która używa Ajax, aby uzyskać pewne dane. Funkcja ZF2 powinna zwrócić ciąg JSON.

<?php
namespace Application\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\View\Model\JsonModel;

class DocumentsController extends AbstractActionController {

    public function indexAction() {

    }

    public function getTreeDataAction() {
        $json = new JsonModel(array(
                    'title' => 'Some Title'
                ));
        return $json;
    }

}

Ale ciągle otrzymuję ten błąd krytyczny:

( ! ) Fatal error: Uncaught exception 'Zend\View\Exception\RuntimeException' with message 'Zend\View\Renderer\PhpRenderer::render: Unable to render template "application/documents/get-tree-data"; resolver could not resolve to a file' in ../vendor/ZF2/library/Zend/View/Renderer/PhpRenderer.php on line 451

Szukałem tego błędu i najlepszego sposobu na wykonywanie wywołań ajax w ZF2, jednak wyniki dla wersji beta ZF1 lub ZF2 pojawiają się i nie działają. Dziękuję za każdą radę, której możesz udzielić.

4
Gregory Burns 27 wrzesień 2012, 04:32

2 odpowiedzi

Najlepsza odpowiedź

Hmm, ten błąd w dużej mierze sugeruje, że próbuje uzyskać dostęp do domyślnej strategii renderowania, co jest dość dziwne... Czy dodałeś JsonStrategy do swojego view_manager?

//module.config.php
return array(
    'view_manager' => array(
        'strategies' => array(
           'ViewJsonStrategy',
        ),
    ),
)

Co więcej, dobrym pomysłem jest ustawienie poprawnego nagłówka accept dla wywołań ajaxowych, które akceptują tylko typ zawartości application/json. Z tym zestawem powinno faktycznie działać. Jednak z ciekawości, czy modules/__NAMESPACE__/view/__namespace__/documents/get-tree-data.phtml istnieje?

16
Sam 27 wrzesień 2012, 09:06

Spróbuj czegoś takiego ...

$response = $this->getResponse();
$response->setStatusCode(200);

$jsonArray = {.....}
$response->setBody($jsonArray);

return $response;

I upewnij się, że dodałeś również ViewJsonStrategy do swojej konfiguracji modułu.

0
Ross 24 listopad 2012, 00:48