У меня есть SymfonyForm, у которого есть embedForm. Я хочу сохранить embedForm, если он заполнен, даже если основная форма пуста. Таким образом, пользователь может загрузить столько фотографий, сколько он хочет, для одного объекта foo. Но я не знаю, как заставить Symfony сохранить embedForm?!
Схема
Foo:
columns:
title: {type: string(255), notnull: true}
Photo:
columns:
foo_id: {type: integer}
filename: {type: string(255), notnull: true}
caption: {type: string(255), notnull: true}
relations:
Foo:
alias: Foo
foreignType: many
foreignAlias: Photos
onDelete: cascade
FooPhotoForm:
$photo = new Photo();
$photo->Foo = $this->getObject();
$photoForm = new PhotoForm($photo);
$this->embedForm('newPhoto', $photoForm);
PhotoForm:
$this->useFields(array('filename', 'caption',));
$this->validatorSchema['filename'] = new sfvalidatorFile(...);
Действие:
protected function processForm(sfWebRequest $request, sfForm $form)
{
$form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
if ($form->isValid())
{
$cms = $form->save();
}
else
{
if(caption and filename not empty)
{
$form->saveEmbeddedForms();
}
else
{
$this->getUser()->setFlash('error', 'The item has not been saved due to some errors.', false);
}
}