我在Symfony2应用程序中有一个表单,我要求用户上传文件.此字段不是必需的.目前,我使用以下命令处理用户的文件:
$file = $form['attachement']->getData();
我的问题是,如果$file返回NULL,我该如何设置默认文件,即用户不想上传任何文件?
谢谢.
最佳答案 首先,您必须从默认文件中创建有效对象.
为此,请使用
Symfony\Component\HttpFoundation\File.
用法:$file = new文件(‘path / of / your / default / file’);
然后,您必须在数据绑定完成之前更新表单.
为此,您有两个解决方案:
1-如果字段为空,请使用FormEvent手动设置文件. (例如PRE_SUBMIT和POST_SUBMIT)
2-在实体中使用prePersist / preUpdate挂钩. (不涉及移动您的逻辑,未映射的属性’attachment’应该已经存在于您的实体中)
对于选项1,请参阅食谱的Dynamic form modification章节并查找适当的事件(文档将提供选择它的信息).
有关2,请参阅Docntine文档的Events章节.
像下面这样的东西应该做的工作:
/**
* @ORM\HasLifecycleCallbacks
*/
class YourEntity {
/**
*
* @ORM\PrePersist
* @ORM\PreUpdate
*/
public function manageFile()
{
if ($this->attachment === null) {
$file = new File('path/of/your/default/file');
$this->setAttachment($file);
}
}
}
我希望这对你来说已经足够了.