在Symfony中,很容易在控制器中获取请求:
$request = $this->container->get('request');
现在,我认为这是一种不好的做法......但是可以修改该请求,这意味着,例如在绑定之前修改隐藏表单字段的值:
$requestModifiedWithNewValueForHiddenFormField = $request;
// modify the request
// ....
$this->bind($requestModifiedWithNewValueForHiddenFormField);
我想我应该使用dataTransformer,但在这种情况下,我想就修改请求发表意见......
答案 0 :(得分: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");
答案 1 :(得分:1)
这取决于你想要达到的目标。
当这个逻辑(修改隐藏文件)对于多个控制器来说是常见的时候你应该使用一些干法,比如dataTransformer或事件订阅者:
http://symfony.com/doc/current/cookbook/form/dynamic_form_generation.html
您还可以向表单注入请求并创建表单方法来处理此问题。