Проверка форм symfony2 с дополнительными полями
Я работаю над бэкэндом symfony2 для приложения backbone.js. У меня есть моя модель и форма.
Однако backbone.js отправляет некоторые дополнительные свойства API REST при создании/обновлении модели, и я пытаюсь получить форму для проверки.
Как я могу получить форму в symfony2 для приема дополнительных данных или как я могу удалить определенные ключи перед привязкой данных к форме?
Ответы
Ответ 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) прослушивателя событий и добавлять/удалять поля. См. эту статью в кулинарной книге.