Как в форме на Symfony 2 вывести исходное значение?

Есть большая форма редактирования со сложной иерархией.
Необходимо под input писать значения поля из БД.
Но так, чтобы после отправки формы, в случае не прохождения валидации, это значение не менялось.

Виджет inputа исправил.
В варианте
$builder->addEventListener(
            FormEvents::POST_SET_DATA,
            function (FormEvent $event){
      $form = $event->getForm();
       $form->add(
                'max_count',
                'integer',
                [
                    'label' => 'deal.coupon_count.name',
                    'initial_value' =>$form->get('max_count')->getData(),
                    'attr' => [
                        'placeholder' => 'count.max',
                        'class' => 'form-control small'
                    ],
                    'required' => false
                ]);
});

Всё работает нормально.
Но не могу сообразить, как сделать автоматическую подстановку этого значения. Например, если вместо опции initial_value (со значением объекта) передать опцию 'set_initial_value' => true
  • Вопрос задан
  • 2672 просмотра
Пригласить эксперта
Ответы на вопрос 2
@maksmaers
$max_count = 10;

$form->add(
'max_count', 'integer', array(
    'label' => 'deal.coupon_count.name',
    'data' => $max_count
))

data - значение, которое будет подставлено в форму
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Создаете экстеншен, профит. Можно за основу взять вот эту статью. Суть будет та же - вам надо расширить нужные вам типы (по идее вообще field, от которого все и наследуется), и проверять в нем настройки, манипулировать данными и т.д. Так же вместо ивент листенеров можно дата трансформеры применить, по идее будет надежнее ибо вы всегда будете иметь данные модели... Хотя тут нужно думать и пробовать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы