我使用Symfony2表单,其中包含基于4个复选框的选择字段。现在我遇到了问题,我无法在此选择字段中重新加载数据。这意味着,当在数据库中存储值9时,如果" lang test&#34,则复选框是否未知;执行"当我在此表单中加载实体时,未被选中。
->add('fu5LangTest', 'choice', array(
'choices' =>array(
'poor compliance'=>0,
'negative'=>1,
'positive (recognizes at least 1 image reliably)'=>2,
'unknown if "lang test" performed'=>9),
'choice_value' =>function (DataEFu5 $entity = null) {
return $entity ? $entity->getFu5LangTest() : '';
},
'expanded'=>true))
我用choice_value Attribut尝试了很多东西,但我认为我错了。什么是正确的方式?我没有找到一些有用的信息。我需要做什么,重新加载后会选择正确的复选框?
存储过程正常。
感谢您的反馈
答案 0 :(得分:0)
表单不是域逻辑的正确位置 无论如何,数据具有当前的fu5LangTest值。你应该使用
->add('fu5LangTest', 'choice', array(
'choices' =>array(
'poor compliance'=>0,
'negative'=>1,
'positive (recognizes at least 1 image reliably)'=>2,
'unknown if "lang test" performed'=>9
),
// ...
在Controller中创建表单:
$object = new DataEFu5(); //or get it by your repository
//this condition will be better in a service as it is business logic ;)
if(!in_array($object->getFu5LangTest, [0,1,2])) {
$object->setFu5LangTest(9);
}
$form = $this->createForm(ObjectType, $object);