我有一个包含embedForm的SymfonyForm。即使主Form为空,我想保存embedForm。这样用户就可以根据需要为一个foo objekt上传尽可能多的照片。但我不知道如何强制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);
}
}
答案 0 :(得分:1)
强迫我觉得你正试图破解正常的执行以使事情有效,我真的不建议你去做,但这里有一些选择:
在创建或更新等操作中检查管理生成器代码(存储在缓存中),它可以帮助您更直观地了解这个想法。