7

問題:zendコントローラーでは、スクリプトを直接出力したくない場合がありますが、そのスクリプトのコンテンツが必要な場合があります。1つの例:クライアント側で処理するために、ビュースクリプトの結果のhtml出力をJSONやXMLなどの別の構造に含める必要がある場合。

私はここでスタックオーバーフローで結果を見つけましたが、それは別のコンテキストにあったのでそれほど速くはありませんでした。私はこれに2日間苦労しています。結局のところ、それは非常に単純でした。

    // in our controllers' action method
    $this->_helper->layout()->setLayout('empty');    // disable layout
    $this->_helper->viewRenderer->setNoRender(true); // make sure the script is not being rendered

    // any of your code here
    $html = $this->view->render('projects/climate.phtml');  // return the view script content as a string
    $json = array('html'=>$html, 'initData'=>'my other needed data');
    echo json_encode($json);

これが明確で、誰かに役立つことを願っています。

4

1 に答える 1

9

使ってみて

public myAction () {
    $this->_helper->json(array(
        'html'    => $this->view->render('projects/climate.phtml'),
        'initData'=> 'my other needed data',
    ));
}

Json アクション ヘルパーは通常、

  • を無効にするviewRenderer
  • レイアウトを無効にする
  • json_encode配列
于 2010-09-27T20:49:54.597 に答える