2

テンプレート名のリストをパラメーターとして受け取り、これらのレンダリングされたテンプレートを JSONed ハッシュとして返す symfony 1.4 アクションが必要です。コードは次のとおりです。

foreach ($templateNames as $templateName)
  $result[$templateName] = $this->getController()->getPresentationFor($this->getModuleName(), $this->getActionName(), $templateName);

このコードは、「この要求に対して検出された転送が多すぎます」という原因になります。スローされる例外。これは、 getPresentationFor が同じモジュールとアクションへの内部リクエストを作成するためだと思います。問題は、どのようにして目標を達成し、いくつかのテンプレートをレンダリングして返すことができるかということです。

PS: 既存のシステムで作業しているため、パーシャルやコンポーネントは使用できず、テンプレートのみを使用しています。

4

1 に答える 1

5

これを試して:

$view = $this->getController()->getView($this->getModuleName(), $this->getActionName(), sfView::SUCCESS);
$view->execute();
$view->getAttributeHolder()->add($this->getVarHolder()->getAll());
$result[$templateName] = $view->render();

私は個人的に sfAction を拡張して getPresentation メソッドを含めました。

<?php

abstract class kfAction extends sfAction {

    public function getPresentation($viewName = sfView::SUCCESS) {
        $view = $this->getController()->getView($this->getContext()->getModuleName(), $this->getContext()->getActionName(), $viewName);
        $view->execute();
        $view->getAttributeHolder()->add($this->getVarHolder()->getAll());
        return $view->render();
    }

}
于 2012-06-19T12:22:36.427 に答える