0

ESI によって使用されるコントローラーへのルートで、メイン コントローラーから値を渡す必要があります。

したがって、コントローラーは Twig テンプレートをレンダリングし、Twig ではこれが呼び出されます。

{{ render_esi(url('route_name')) }}

上記はコントローラーをレンダリングします。情報をやり取りする必要があるのは、この 2 つのコントローラーです。

$request->attributes を使用しても、ESI ではない場合でも機能しないことに気付きました。

//these WON'T pass between master request and ESI
$request->attributes->set('the_value');
$request->attributes->get('the_value');

場合によってはセッションがクリアされていることを確認する必要があるため、セッションは理想的ではありません。

私は本当に同じリクエストが一度情報を渡すことを望んでいます。私は $request->attributes が共有されることを望んでいましたが、これは 1 つのリクエストです (ただし、Symfony はそれをさまざまなサブリクエストを持つ 1 つのマスターリクエストと呼んでおり、$request->attributes はそのスコープにロックされていると推測しています)。 .

ESI 呼び出しでクエリ パラメータとして渡すことも、渡す必要がある情報の配列になる場合があるため、適切ではありません。

何か案は?

4

1 に答える 1

3

次のようにアクションに引数を渡すことができます。

{{ render_esi(controller('YourBundle:Default:news', { 'max': 5 })) }}

または、このようなルートパラメーターを使用します

{{ render_esi(url('latest_news', { 'max': 5 })) }}

この質問で正しく答えられたように。

于 2013-06-09T20:50:56.483 に答える