Я не нашел простого способа выполнить проверку флажка по умолчанию. Это не может быть так сложно, так что мне не хватает?
Как отобразить флажок, который по умолчанию установлен в Symfony2 Form Builder?
Ответ 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:: setDatastrong > ():
$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
));
}
}
Ответ 8
В соответствии с документацией: http://symfony.com/doc/current/reference/forms/types/checkbox.html#value
Чтобы установить флажок или переключатель, установленный по умолчанию, используйте параметр данных.
Ответ 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);
Ответ 11
Чтобы выполнить предыдущий ответ, с несколькими полями вы можете сделать это, чтобы проверить все варианты:
'choice_attr' => function ($val, $key, $index) {
return array('checked' => true);
}
https://symfony.com/doc/3.3/reference/forms/types/choice.html#choice-attr