如何使用所选值显示选择字段(复选框)

时间:2017-11-15 09:32:10

标签: symfony

我使用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尝试了很多东西,但我认为我错了。什么是正确的方式?我没有找到一些有用的信息。我需要做什么,重新加载后会选择正确的复选框?

存储过程正常。

感谢您的反馈

1 个答案:

答案 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);