选项字段默认值

2022-08-30 14:32:46

我有以下表格:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
    ->add('type', ChoiceType::class, array(
        'expanded' => true,
        'multiple' => false,

        'choices' => array(
            'Friend' => 'friend',
            'Guide' => 'guide'
        )
    ));
}

如何使“朋友”复选框在呈现表单时默认选中?


答案 1

我认为你应该尝试使用选项,但这只是在你甚至没有在对象中保存数据的情况下,因为它会覆盖它。data

重要提示:它适用于创建操作,但不适用于编辑操作。

 public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
        ->add('type', ChoiceType::class, array(
            'expanded' => true,
            'multiple' => false,

            'choices' => array(
                'Friend' => 'friend',
                'Guide' => 'guide'
            ),
            'data' => 'friend'
        ));
    }

官方链接

摘录

创建表单时,每个字段最初显示表单的域对象的相应属性的值(如果对象绑定到表单)。如果要覆盖表单的初始值或仅覆盖单个字段的初始值,可以在 data 选项中设置它

如果需要空值,请更新

如下面的答案所示,如果您在任何情况下需要更新默认值,请替换为dataempty_data


答案 2

使用表单域选项。(不是因为它会覆盖任何发布的数据,除非您动态设置它)。empty_datadata

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
    ->add('type', ChoiceType::class, array(
        'expanded' => true,
        'multiple' => false,

        'choices' => array(
            'Friend' => 'friend',
            'Guide' => 'guide'
        ),
        'empty_data' => 'friend'
    ));
}

复杂情况的另一个选项是使用 Sf 动态表单事件


推荐