很抱歉有很多问题,但我是Symfony的新手。我做了一个表格,一切运作良好。我有几个字段的图片(Picture1,Picture2,Picture3等)。我使用了te sfWidgetFormInputFile,所有这些都很好用。它将文件上传到需要的位置,并为其提供唯一的名称。
我遇到的问题是这些字段在mySQL中设置为默认值为“no-pic.png”,这样如果用户没有上传图片,它仍然会显示一些内容这篇文章。但每次有人上传图片时,它都会删除我的no-pic.png文件以及没有带有空白正方形图片的帖子。我在想它是因为它在上传新图片之前设置为“删除上一张图片”,以减少服务器上多余的未使用图片。
我想知道是否有办法让它在从文件夹中删除之前检查该值是否为“no-pic.png”。如果它有帮助,这是我在form.class文件中使用的代码。
$this->widgetSchema['picture1'] = new sfWidgetFormInputFile(array('label' => 'Pictures', ));
$this->validatorSchema['picture1'] = new sfValidatorFile(array('required' => false, 'path' => sfConfig::get('sf_upload_dir').'/car', 'mime_types' => 'web_images', ));
$this->widgetSchema['picture1'] = new sfWidgetFormInputFileEditable(array(
'label' => 'Pictures',
'file_src' => '/uploads/car/'.$this->getObject()->getPicture1(),
'is_image' => true,
'edit_mode' => !$this->isNew(),
'template' => '<div>%file%<br />%input%<br />%delete%%delete_label%</div>',
));
$this->validatorSchema['picture_delete'] = new sfValidatorPass();
答案 0 :(得分:1)
这里仅供参考,是我使用的代码。
$this->setWidget('logo_image', new sfWidgetFormInputFileEditable(array(
'file_src' => 'uploads/logos/'.$this->getObject()->getFilename(),
'edit_mode' => !$this->isNew()
)));
$validatorOptions = array(
'max_size' => 1024*1024*10,
'path' => sfConfig::get('sf_upload_dir').'/logos',
'mime_type_guessers' => array(),
'required' => false
);
if ($this->isNew())
{
$validatorOptions['required'] = true;
}
$this->setValidator('logo_image', new sfValidatorFile($validatorOptions));
$this->setValidator('logo_image_delete', new sfValidatorString(array('required' => false)));
答案 1 :(得分:0)
我找到了解决方法。我检查页面是否设置为no-pic.png,然后在另一个位置显示no-pic.png。这样,当它上传图片时,它不会删除它。 :)谢谢你的帮助。