Symfony(v 2.3.2)表单有一个奇怪的问题。这是非常简单的形式,没有关系。我还应该注意到,这种形式仅用于REST API。Symfony2表单提交无效的布尔值
所以我有一个发布的领域(布尔)。在实体上它默认设置为false。
更新时,REST API客户端发送正确的PUT请求,即...&[entity]published=0&...
。这个值也在Symfony分析器中的表单参数中显示。
但是我注意到数据库中的实际值设置为true(或1,因为它是tinyint)。 Request: 0, form: 1
:
所以,要找出什么问题,我$form->submit($request);
throw new \Exception(sprintf('Request: %s, form: %s', $request->get('entity')['published'], $form->get('published')->getData()));
或
throw new \Exception(sprintf('Request: %s, form: %s', $request->get('entity')['published'], $form->getData()->getPublished()));
异常消息称后添加throw语句。这意味着,在某处提交方法的字符串值“0”转换为1
场构造与$builder->add('published', 'checkbox', [ 'required' => false ])
而且我发现奇怪的东西,这可能是相关的。在Symfony分析器,面板请求中,我收到错误:Warning: json_encode(): Invalid UTF-8 sequence in classes.php line 3758
,我没有发送任何奇怪的字符 - 只是单词“测试”。