キャッシュすべきではないフォームを含むキャッシュされたサイトがあります。それにはESIを使用します。フォームが送信されると、コントローラーで POST パラメーターを取得する必要があります。Symfony では、実際の POST データではなく、リクエスト パラメータの「フォーム」を取得できます。または、それらを取得する良い方法はありますか。
{{ render_esi(controller('MyBundle:Form:staticForm', {'form': 'sidebar'}))}}
親ページキャッシュのため、小枝でそれらを設定しても機能しません。
{{ render_esi(controller('MyBundle:Form:staticForm', {'form': 'sidebar', 'request': }))}}
コントローラーで post パラメーターを取得する方法 現在、ここに示すコードは ESI データのみを取得します。
public function staticFormAction(Request $request) {
// ..
$form->handleRequest($request);// will not work because:
$request->get('firstName'); // is empty when called by ESI
親リクエストからパラメータを取得するにはどうすればよいですか?
ハッキーなソリューション
現在、私が見つけた唯一の解決策は、あまりにもハックな
TWIG です。
{{ render_esi(controller('ClientWebsiteBundle:Form:staticForm', app.request.request.all|merge({'form': 'sidebar'}), app.request.query.all)) }}
PHP:
$data = ($request->get('myFormName'));
if (count($data)) {
// Forms uses $request->request
$request->request->set('myFormName', $data);
$request->setMethod('POST');
}
追加
少し調べてsymfonyのコアコードを調べた後、ESIをPostに変更する必要があるので、私の質問は「GETではなくPOSTメソッドとしてESIを呼び出す方法」です。
解決
投稿されたような requestStack を使用Chris Tickner
することは、投稿ソリューションのようです。