Как сделать флажок, который установлен по умолчанию с помощью Symfony2 Form Builder? - PullRequest
17 голосов
/ 06 марта 2012

Я не нашел простого способа установить флажок по умолчанию. Это не может быть так сложно, так чего мне не хватает?

Ответы [ 12 ]

1 голос
/ 02 декабря 2013

Это также работает, но известно о постоянном "проверенном" состоянии

$builder->add('isPublic', 'checkbox', array(
    'empty_data' => 'on',
));
0 голосов
/ 27 февраля 2019

Так вы можете определить значения по умолчанию для нескольких и расширенных полей флажков.Протестировано в Symfony4, но оно должно работать с Symfony 2.8 и выше.

, если вы хотите активировать первый и второй флажки по умолчанию

class MyFormType1 extends AbstractType
{
    CONST FIELD_CHOICES = [
        'Option 1' => 'option_1',
        'Option 2' => 'option_2',
        'Option 3' => 'option_3',
        'Option 4' => 'option_4',
        'Option 5' => 'option_5',
    ];

    public function buildForm(FormBuilderInterface $builder, array $options)
    {

        $this->addSettingsField('my_checkbox_field', ChoiceType::class, [
            'label'    => 'My multiple checkbox field',
            'choices'  => self::FIELD_CHOICES,
            'expanded' => true,
            'multiple' => true,
            'data'     => empty($builder->getData()) ? ['option_1', 'option_2'] : $builder->getData(),
        ]);

    }
}

если вы хотите активировать каждый флажок по умолчанию

class MyFormType2 extends AbstractType
{
    CONST FIELD_CHOICES = [
        'Option 1' => 'option_1',
        'Option 2' => 'option_2',
        'Option 3' => 'option_3',
        'Option 4' => 'option_4',
        'Option 5' => 'option_5',
    ];

    public function buildForm(FormBuilderInterface $builder, array $options)
    {

        $this->addSettingsField('my_checkbox_field', ChoiceType::class, [
            'label'    => 'My multiple checkbox field',
            'choices'  => self::FIELD_CHOICES,
            'expanded' => true,
            'multiple' => true,
            'data'     => empty($builder->getData()) ? array_values(self::FIELD_CHOICES) : $builder->getData(),
        ]);

    }
}
...