Оповещение о спойлере: этот вопрос задавался много раз на протяжении многих лет, но, разумеется, я не видел рабочих решений. здесь например
Я разрабатываю приложение на основе версии Symfony 2.8.
У меня есть объект с логическим значением, который я сопоставляю в formType с CheckboxType.
Что мне нужно, это:
- , если это новый объект, флажок установлен
- , если пользователь снял флажок, затем сохранился, яхочу, чтобы флажок не отмечен
- если я снова открою форму, если пользователь установил флажок, а затем сохранился, я хочу, чтобы флажок был установлен, если я снова открою форму
Это говорит, что ямы перепробовали много «решений», которые были предложены по темам
1) В Entity
я установил для моего логического атрибута значение true => FAIL:флажок не установлен по умолчанию
class MyEntity
{
/**
* @ORM\Column(name="enabled", type="boolean")
*/
private $enabled = true;
public function __construct()
{
$this->enabled = true;
}
}
2) В FormType
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('enabled', CheckboxType::class, [
'required' => false,
'empty_data' => true,
]);
}
Это 'empty_data' => true (или 'empty_data' => 1или что-то еще) работает "частично": он отображает правильное состояние флажка ПОСЛЕ персистентности, но не проверяет tфлажок по умолчанию => FAIL
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('enabled', CheckboxType::class, [
'required' => false,
'data' => true,
])
}
По умолчанию флажок установлен, НО, если пользователь снимает флажок и сохраняется, в перезагруженной форме по-прежнему отображается флажок, даже если постоянное состояние не проверено=> FAIL это ожидается, как указано в документах
Поскольку этот объект не является основным объектом формы: подчиненная форма (в коллекции), я также попыталсяустановить для составного атрибута значение true в CheckboxType без эффекта.
3) Установка значения в контроллере при создании экземпляра формы
этот вариант невозможен, так как флажок не указан в основном Entity / FormType
=> Мой метод
Sofar, единственное "рабочее решение", которое я нашелустановить флажок при добавлении нового блока этой коллекции с использованием javascript:
$(element).prop('checked', true)
Это менее чем оптимально ...
У вас есть решение для этого с SF> =2.8 (2.8 моя версия)?Решение - сторона Symfony.