おそらく、別のテンプレートを含むinclude
タグが必要です。
{% include 'FooBundle::partial.html.twig' %}
テンプレートを含めるのは、部分的なものだけが必要な場合です。
render
タグは、コントローラの呼び出し、より複雑な作業、またはテンプレートが表示に必要な変数にアクセスできない場合に使用します。あたかもカーネルがスタンドアロン要求のように新しい要求を作成するのです。実際にはESIを使用すると、そのコントローラーへのスタンドアロン要求になる可能性があります。 See here for details。そのため、メインリクエストオブジェクトを取得できません。ESIを使用しているため、またはそのコントローラのルートを作成してAJAXなどを介して呼び出すため、メインリクエストオブジェクトが存在しない可能性があります。あなたのコントローラがサブリクエストを介して呼び出される情報に依存することは、私が知っているようにフレームワークによってサポートされておらず、意図的だと思います。クエリパラメータのすべての情報を渡す必要があります。
あなたの例が正しくない、それはこのようになります:
{% render 'FooBundle:MyController:actionName' ... %}
あなたはtihsを動作させるために、このようなFooBundle\Controller\MyControllerController
クラスを持っている必要があります。
namespace FooBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class MyControllerController extends Controller {
public function actionNameAction() {
...
}
}
はい、私はレンダリングの例を誤解し、これを修正しました。しかし、私の質問は開いています:) "FooBundle:MyController:actionName"でメインリクエストオブジェクトを取得する方法は? – rtyshyk
あなたは私が知る限り、それをすることはできません。なぜ私が答えることができないのかについての文章を追加しました。 –
私はそれをどのようにしたかについて、より詳細を付け加えました。 – renoirb