Doctrine ChoiceType在表单加载

时间:2018-02-13 09:34:23

标签: forms symfony doctrine-orm

我使用表单类型文件中的buildForm()函数在Symfony CRM上创建了一个表单。此表单包含一个选项下拉列表,包含简单的“是”和“否”选项,分别映射到1和0。我需要能够将“否”作为默认值,因为我的客户更经常会在“是”上选择此选项。阅读文档here后,我认为preferred_choices选项符合我的需求。

以下是buildForm()中的条目:

$builder->add('non_rider', ChoiceType::class,
    array(
        'label' => 'Is Non-Rider',
        'required' => true,
        'placeholder' => false,
        'choices' => array(
            'Yes' => 1,
            'No' => 0
        ),
        'preferred_choices' => array(0,1),
        'label_attr' => array(
            'class' => 'control-label'
        ),
        'attr' => array(
            'class' => 'form-control required'
        )
    ));

但是,这会将订单显示为“是”,然后将“否”显示为“是”作为默认选择选项。我想知道它是否将0读为null,这意味着它没有注册?有没有办法在表单加载时将“否”设置为自动选择选项?

1 个答案:

答案 0 :(得分:1)

您可以使用"数据"这里提到的选项symfony.com/doc/current/reference/forms/types/choice.html,并在此处显示http://stackoverflow.com/a/35772605/2476843

$builder->add('non_rider', ChoiceType::class,
array(
    'label' => 'Is Non-Rider',
    'required' => true,
    'placeholder' => false,
    'choices' => array(
        'Yes' => 1,
        'No' => 0
    ),
    'data' => 0,
    'preferred_choices' => array(0,1),
    'label_attr' => array(
        'class' => 'control-label'
    ),
    'attr' => array(
        'class' => 'form-control required'
    )
));