2

Symfonyでは、コントローラー内でリクエストを取得するのは簡単です。

$request = $this->container->get('request');

さて、これは悪い習慣だと思います...しかし、そのリクエストを変更することは可能です。つまり、たとえば、非表示のフォームフィールドの値をバインドする前に変更します。

$requestModifiedWithNewValueForHiddenFormField = $request;
// modify the request
// ....
$this->bind($requestModifiedWithNewValueForHiddenFormField);

dataTransformerを使用する必要があると思いますが、この場合、リクエストの変更についてご意見をお聞かせください...

4

2 に答える 2

7

リクエストフィールドをすばやく変更するには、次のようにします。

$request = $this->getRequest()->request;
$requestArray = $request->all();
$requestArray['nested']['modifying_field'] = "Modified value";
$request->replace($requestArray);

フィールドがネストされていない場合は、次の方法で行うことができます。

$this->getRequest()->request->set("modifying_field", "Modified value");
于 2012-08-21T12:59:03.230 に答える
1

それはあなたが何を達成したいかによります。

このロジック(隠しファイルの変更)が複数のコントローラーに共通する場合dataTransformerやイベントサブスクライバーなどのドライアプローチを確実に使用する必要があります。

http://symfony.com/doc/current/cookbook/form/dynamic_form_generation.html

フォームにリクエストを挿入し、これを処理するフォームメソッドを作成することもできます。

于 2012-08-21T12:01:37.667 に答える