我有一个布尔字段,我已将其作为选择字段(是或否)放入表单中。如果没有数据转换器,我会得到 0 或 1。我添加了一个视图 BooleanToStringTransformer (这似乎是合理的):
$builder
->add(
$builder->create('myBooleanField', 'choice', array(
'choices' => array(true => 'Yes', false => 'No'),
))
->addViewTransformer(new BooleanToStringTransformer('1'))
)
当我尝试显示表单时,我收到错误“Expected a Boolean.”。不过,在创建表单之前,我的字段设置为 false。
我试图将其设置为模型转换器:表单已显示,但当我提交时,我的字段被声明为无效。
我究竟做错了什么?
编辑:我现在几乎明白了。
- 我使用模型转换器而不是视图转换器(选择字段适用于字符串或整数,而不是布尔值)
- 我将选择列表从更改
array(true => 'Yes', false => 'No')
为array('yes' => 'Yes', 'no' => 'No')
所以代码现在看起来像->addModelTransformer(new BooleanToStringTransformer('yes'))
数据转换有效,除了我的字段始终设置为 true,无论我选择什么值。
怎么了?