【问题标题】:Doctrine ChoiceType setting a default value on form loadDoctrine ChoiceType 在表单加载时设置默认值
【发布时间】:2018-02-13 09:34:23
【问题描述】:

我使用表单类型文件中的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 读取为空,这意味着它没有注册?有没有办法让“否”成为表单加载时的自动选择选项?

【问题讨论】:

标签: forms symfony doctrine-orm


【解决方案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'
    )
));

【讨论】:

  • 只是在这里澄清一下,它是选项的值,而不是显示名称。所以,它只能作为'data' => 0
  • 'data'=>0 覆盖任何值,即即使表单字段保存为 1,每次都会渲染为 0
猜你喜欢
  • 1970-01-01
  • 2015-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-10
相关资源
最近更新 更多