Подтвердить что ты не робот

Проверка форм symfony2 с дополнительными полями

Я работаю над бэкэндом symfony2 для приложения backbone.js. У меня есть моя модель и форма.

Однако backbone.js отправляет некоторые дополнительные свойства API REST при создании/обновлении модели, и я пытаюсь получить форму для проверки.

Как я могу получить форму в symfony2 для приема дополнительных данных или как я могу удалить определенные ключи перед привязкой данных к форме?

4b9b3361

Ответ 1

Чтобы Symfony2 принял дополнительные данные, добавьте дополнительные поля в свой конструктор форм и установите для параметра property_path значение false:

Пример:

$builder
    ->add('my_additional_field', 'checkbox', array(
        'mapped' => false,
    ));

Вам не нужно бросать ключи перед привязкой данных, они все равно будут проигнорированы.

Ответ 2

Вы должны использовать опцию "allow_extra_fields".

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
        $resolver->setDefaults(
        array(
            'allow_extra_fields' => true
        )
    );
}

Ответ 3

Свойство property_path теперь устарело в sf 2.1, вместо этого используйте "сопоставленный"

$builder
    ->add("firstName", "text")
    ->add("lastName", "text")
    ->add("tac", "checkbox", array(
        "mapped" => false
    )
);

Ответ 4

Вы можете прослушивать FormEvents::BIND_CLIENT_DATA (или FormEvents::PRE_BIND при использовании 2.1 dev) прослушивателя событий и добавлять/удалять поля. См. эту статью в кулинарной книге.