4

私はZF2を学ぼうとしています。Ajaxを使用してデータを取得するページがあります。ZF2関数は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;
    }

}

しかし、私はこの致命的なエラーを受け取り続けます:

( ! ) 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

私はこのエラーとZF2でajax呼び出しを行うための最良の方法を探していましたが、ZF1またはZF2ベータの結果が表示され続けて機能しません。アドバイスありがとうございます。

4

2 に答える 2

16

うーん、そのエラーは、デフォルトのレンダリング戦略にアクセスしようとしていることを意味しますが、これは非常に奇妙です... JsonStrategyをview_managerに追加しましたか?

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

application/jsonさらに、コンテンツタイプのみを受け入れるようにajax呼び出し内で正しいacceptヘッダーを設定することをお勧めします。このセットを使用すると、実際に機能するはずです。不思議なことに、modules/__NAMESPACE__/view/__namespace__/documents/get-tree-data.phtml存在しますか?

于 2012-09-27T05:06:35.453 に答える
0

このようなことを試してください...

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

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

return $response;

また、モジュール構成にもViewJsonStrategyを追加してください。

于 2012-10-21T21:51:23.410 に答える