Php Symfony 2文件上载设置默认文件
我在我的Symfony2应用程序中有一个表单,我要求用户上传一个文件。此字段不是必需的。目前,我使用以下命令处理用户的文件:Php Symfony 2文件上载设置默认文件,php,symfony,Php,Symfony,我在我的Symfony2应用程序中有一个表单,我要求用户上传一个文件。此字段不是必需的。目前,我使用以下命令处理用户的文件: $file = $form['attachement']->getData(); 我的问题是,如果$file返回NULL,即用户不想上传任何文件,我如何设置默认文件? 谢谢。我想,条令应该对你有所帮助。使用prePersist或preUpdate事件检查is$this->file===null,并设置默认值。首先,必须从默认文件创建有效对象。 要做到这一点,请使用
$file = $form['attachement']->getData();
我的问题是,如果$file返回NULL,即用户不想上传任何文件,我如何设置默认文件?
谢谢。我想,条令应该对你有所帮助。使用
prePersist
或preUpdate
事件检查is$this->file===null
,并设置默认值。首先,必须从默认文件创建有效对象。要做到这一点,请使用 用法:
$file=newfile('path/of/your/default/file')代码>
然后,您必须在数据绑定完成之前更新表单。
为此,您有两种解决方案:
1-如果字段为空,则使用FormEvent
手动设置文件。(例如,提交前
和提交后
)
2-在实体中使用prePersist/preUpdate挂钩。(不涉及移动逻辑,未映射属性“attachment”应已存在于实体中)
对于选项1,请参阅烹饪手册的章节,并查找适当的事件(文档将提供选择该事件的信息)
关于第2章,请参见条令文件章节。
类似于以下内容的内容应该可以完成这项工作:
/**
* @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);
}
}
}
我希望对您来说足够了。目前我正在检查文件是否正确=在我的控制器中为空。问题是我想在else语句中设置一个默认文件,但找不到相应的函数。如果我使用setFile(“file/path”),我将调用null上的成员函数setFile()。@Jack,您可以将此逻辑从控制器移动到实体。它允许您在创建实体时及时设置默认值。这就是你想要的吗?事实上,我想把它留在一个控制器中,就像现在一样。但若并没有办法,我会把它转移到实体。我已经阅读了有关生命周期回调的文档,但也没有找到关于如何设置默认文件的任何信息((.也许有人可以指出它?谢谢。实际上,$file=new file('path/of/your/default/file');
足以完成所有工作))