0

ビュー スクリプトからアクションを呼び出そうとすると、Action View Helper で問題が発生します。ビューは /views/scripts/home にあり、HomeController に属しており、BookController からアクションにアクセスしたいと考えています。

私の見解には次のコードがあります。

foreach ($this->books as $book) {

    if (!empty($book['asin'])) {     
        $bookObj = $this->action('get-book-by-asin', 'book', null, 
                                 array('asin' => $book['asin']));

getBookByAsinAction() で $data 変数を返したいとします。Action View Helper呼び出しへの応答としてそれを送り返す方法は?

ビューで行うのではなく、コントローラーで $books 変数を使用してforeachを実行できるようになりましたが、ちょっと興味があります。または、将来、特定のアクションがより有用な再利用可能なコンテンツまたは「ウィジェット化された」コンテンツを生成できる場合に、Action View Helper を使用するかもしれません。

DB クエリから多くの行を取得する場合、2 つではなく foreach だけを実行する方がよいでしょうか? 結果を適切にレンダリングするために、1 つの foreach がビューにあり、コントローラーで別の foreach を実行して、本に ASIN があるかどうかを確認し、Web サービスなどを呼び出すことを検討する必要があります。これは最適なソリューションですか?

それとも、説明されている方法で Action View Helper を使用する方がよいでしょうか?

4

2 に答える 2

0

新しいアクション ヘルパーを作成し、ビューでアクション ヘルパー ブローカーを使用して呼び出すことができます。

getBookByAsin というアクション ヘルパーを作成するとします。

コードビューで:

$gbba= Zend_Controller_Action_HelperBroker::getStaticHelper('getBookByAsin');

$var = $gbba->direct("asin");
于 2012-04-20T20:55:03.360 に答える
0

私の解決策は、getBookByAsinAction() を次の行で終了することでした$this->_response->setBody(json_encode($data));$book = (array) json_decode($bookObj);

このアクションの get-book-by-asin.phtml ビューを作成しなかったため、追加しました$this->_helper->viewRenderer->setNoRender();

于 2012-04-21T07:02:23.653 に答える