在Symfony2的单选按钮选择字段上设置默认值

6

我有一个Symfony2表单:

public function buildForm(FormBuilder $builder, array $options)
{   
    $builder
        ->add('submitter_is_home', 'choice', array(
            'expanded' => true,
            'choices' => array('1' => 'Home', '' => 'Away'),
            'data' => '1',
        ))  
    ;   
}   

为了清晰起见,我省略了其他字段。

当我在浏览器中访问此表单时,“主页”选项未被选中。我也检查了源代码,看起来正确的属性也没有设置。

默认值对于单选按钮是否与其他类型的choice字段不同?这里可能出了什么问题?

2个回答

10

如果您希望选项被选中,empty_value 将不起作用。

简单的解决方法是在添加表单之前给您的对象设置一个值(例如 $myentity->setRadiobutton(1))。Symfony 将理解它并将其添加为选定值(对于选择类型有效,可能与单选按钮相同!)


1
如果一个表单元素设置为 'property_path' => false,那么这并不能帮助解决问题。 - marden
当您没有实体表单时怎么办? - altore
给表单类型传递一个数组,而不是一个对象,其中键是表单类型中的键,值为1或true(可能,没有测试过)。应该可以解决问题。 - Snroki
在我的情况下,我使用了一个名为“type”的“choise”类型字段,没有实体。解决方案:$form->get('type')->setData('default_val'); - ZeeCoder

1
在您的控制器newAction()中,在$form = $this->createCreateForm($entity);之前添加默认值,如下所示:$entity->setSubmitter_is_home(1);。请注意,保留HTML标记。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接