@Paromon
Junior software developer

Почему после $form->handleRequest($request) некоторые значения уходят в null?

Всем привет. Недавно работаю с Symfony 4 по этой причине и есть много непонятного. Столкнулся с такой ситуацией что при создании новой записи(работаю не через Entity а через DTO) некоторые параметры установились в значение null.
dump($request->get('hotel_form_builder')):
"countryId" => "189"
  "cityId" => "425754"
dump($form->getData()):
  +countryId: null
  +cityId: null

Если быть конкретнее то это 2 параметра(`countryId` и `cityId`). Для этих двух полей был "написан" свой тип Select2Type:
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\FormView;
use Symfony\Component\Form\FormInterface;

class Select2Type extends AbstractType {
    public function buildView(FormView $view, FormInterface $form, array $options)
    {
        $attr = $view->vars['attr'];
        $class = isset($attr['class']) ? $attr['class'].' ' : '';
        $class .= 'select2';
        $attr['class'] = $class;
        $attr['data-autocomplete-url'] = $attr['data-autocomplete-url'];
        $view->vars['attr'] = $attr;
    }
    public function getParent() {
        return ChoiceType::class;
    }
    public function configureOptions(OptionsResolver $resolver) {
        $resolver->setDefaults([
            'attr' => [
                'class' => 'form-control select2',
                'data-autocomplete-url' => ''
            ]
        ]);
    }
}

Данные передаю через url в виде {id: id, text: 'text'}. Есть большая вероятность того что я неправильно что-то описал или написал.
Это часть кода из buildForm:
...
            ->add('countryId', Select2Type::class, [
                'label'              => 'hotel.field.countryId',
                'translation_domain' => 'hotel_inventory',
                'required'           => true,
                'attr'               => [
                    'data-autocomplete-url' => $router->generate('hotel_country'),
                    'class'                 => 'form-control select2SearchCountry',
                ]
            ])
            ->add('cityId', Select2Type::class, [
                'label'              => 'hotel.field.cityId',
                'translation_domain' => 'hotel_inventory',
                'required'           => true,
                'attr'               => [
                    'data-autocomplete-url' => $router->generate('hotel_city'),
                    'class'                 => 'form-control select2SearchCity',
                ]
            ])
...

Буду признателен за помочь. Если есть какие то идеи или вопросы то задавайте. Вдруг вместе мы поймем где проблема.
  • Вопрос задан
  • 298 просмотров
Пригласить эксперта
Ответы на вопрос 1
@postgresdev
Укажи в entity значения по умолчанию, например:
/**
     * @var bool
     *
     * @ORM\Column(name="active", type="boolean")
     */
    private $active = true;
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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