banderos120
@banderos120
Играю на балалайке

Почему форма не проходит валидацию при использовании типа «collection» с текстовыми значениями?

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('description', 'text')
            ->add('coordinates', 'collection', array(
                'type' => 'text'
            ));

    }

    public function setDefaultOptions(OptionsResolverInterface $resolver){

        $resolver->setDefaults(array(
            'allow_extra_fields' => true,
            'csrf_protection' => false,
            'data_class' => '\AppBundle\Entity\Marker'
        ));

    }


Передаю :

$dataMarker = array(
                'description' => "asdasdada",
                'coordinates' => array(123123, 234234)
            );

            $form = $this->get('form.factory')->create(new MarkerType(), new Marker());
            $form->submit($dataMarker);


Выдает "This form should not contain extra fields".

А если вместо colleciton использовать тип text, и передавать в поле coordinates тоже текст, то нормально проходит без ошибок.
  • Вопрос задан
  • 1485 просмотров
Решения вопроса 1
banderos120
@banderos120 Автор вопроса
Играю на балалайке
Оказалось, что нужно указывать "allow_extra_fields" непосредственно в массиве инициализации поля с типом collection:
->add('coordinates', 'collection', array(
                'type' => 'text',
                'allow_add' => true,
                'allow_extra_fields' => true
            ));


Только схерали там вообще эта ошибка.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы