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 回答