Подтвердить что ты не робот

Как отобразить флажок, который по умолчанию установлен в Symfony2 Form Builder?

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

4b9b3361

Ответ 1

Вы просто установили бы значение в своей модели или сущности true и передали бы его FormBuilder, тогда он должен быть проверен.

Если вы посмотрите на первый пример в документации:

Создается новая задача, затем выполняется setTask, и эта задача добавляется в FormBuilder. Если вы сделаете то же самое с вашим флажком

$object->setCheckboxValue(true);

и передать объект, вы должны увидеть флажок.

Если он не работает должным образом, вернитесь к примеру кода, воспроизводящего ошибку.

Ответ 2

Вы также можете просто установить атрибут attr в методе buildbuilder формы:

$builder->add('isPublic', 'checkbox', array(
    'attr' => array('checked'   => 'checked'),
));

Ответ 3

В Symfony >= 2.3 "property_path" стал "отображен".

Итак:

$builder->add('checkboxName', 'checkbox', array('mapped' => false,
    'label' => 'customLabel',
    'data' => true, // Default checked
));

Ответ 4

Настройка параметра 'data' работает для меня. Я создаю форму, не основанную на сущности:

$builder->add('isRated','checkbox', array(
    'data' => true
));

Ответ 5

В TWIG

Если вы хотите сделать это прямо в шаблоне:

{{ form_widget(form.fieldName, { 'attr': {'checked': 'checked'} }) }}

Ответ 6

Используйте метод FormBuilder:: setData​​strong > ():

$builder->add('fieldName', 'checkbox', array('property_path' => false));
$builder->get('fieldName')->setData( true );

"property_path" в false, потому что это не-сущностное поле (в противном случае вы должны установить для значения по умолчанию значение true с помощью средства определения объекта).

Флажок

будет установлен по умолчанию.

Ответ 7

Вы должны внести изменения во временный объект, где объект хранится, прежде чем отображать его в форме. Что-то вроде следующего:

<?php

namespace KPI\AnnouncementsBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class AnnouncementType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {  
        // ...        

        if ($options['data']->getDisplayed() === null) {
            $options['data']->setDisplayed(true);
        }

        // ...

        $builder
            ->add('displayed', 'checkbox', array(
                'required' => false
            ));
    }
}

Ответ 9

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

$builder->add('isPublic', 'checkbox', array(
    'empty_data' => 'on',
));

Ответ 10

UserBundle\Entity\User

предположим, что у вас есть объект, называемый (Пользователь), и у него есть член с именем isActive, вы можете установить флажок, который нужно проверить по умолчанию, установив isActive в true:

$user = new User();

// This will set the checkbox to be checked by default
$user->setIsActive(true);

// Create the user data entry form
$form = $this->createForm(new UserType(), $user);