我正在尝试将VichImageBundle与Symfony3一起使用,到目前为止,还没有关于与Vich Image Bundle结合使用的S3的FormType :: class调用的文档。除了活动部分,我一切正常。
我在这里的项目内部制作了一个文件夹结构:web / images / aod_images
我已经在yml文件中设置了这样的配置:
vich_uploader:
db_driver: orm
mappings:
aod_images:
uri_prefix: /images/aod_images
upload_destination: %kernel.root_dir%/../web/images/aod_images
实体属性在此处:(我已经安装了getter和setter方法)
/**
* @Vich\UploadableField(mapping="aod_images", fileNameProperty="dailyChartName")
*
* @var File
*/
private $dailyChart;
/**
* @ORM\Column(type="string", length=255)
*
* @var string
*/
private $dailyChartName;
/**
* @Vich\UploadableField(mapping="aod_images", fileNameProperty="twohourChartName")
*
* @var File
*/
private $twohourChart;
/**
* @ORM\Column(type="string", length=255)
*
* @var string
*/
private $twohourChartName;
我在控制器类中调用适当的set time方法,特别是在editAction和newAction控制器上:
$analysis->setUpdatedAt(new \DateTime('now'));
到目前为止,在该实体的FormType类中,我具有以下内容:
->add('dailyChartName', FileType::class, array())
->add('twohourChartName', FileType::class, array())
我不确定每个图像实例要传递给-> add方法的选项。
该应用程序正在正确构建表单。
当我执行tail -f dev.log时,我得到以下消息作为doctrine.DEBUG通道的一部分:
(Symfony\\Component\\HttpFoundation\\File\\UploadedFile: /Applications/MAMP/tmp/php/phpEz6kJO)","13":"[object] (Symfony\\Component\\HttpFoundation\\File\\UploadedFile: /Applications/MAMP/tmp/php/phpVkbZgi)
图片名称属性与我在config.yml文件中映射的内容不匹配。相反,该路径反映了我的本地计算机到内部php tmp目录的路由。我在使用server:run命令后从127.0.0.1:8000运行此程序。
当我在那个目录中的形象不被搬到那里。
(不正确的)图像名称被复制到数据库中。但是,图像的路径为空(错误的路径)。此外,正确的路径/目录也为空。
问候!
编辑
根据Matteo的建议,我对FormType.php文件进行了以下更改。
->add('dailyChart', VichFileType::class, array(
'required' => TRUE,
))
->add('twohourChart', VichFileType::class, array(
'required' => TRUE,
))
编辑2
为了使我的实现更紧密地遵守文档,我按照docs的建议将了updateAt设置在实体中。
我的设置方法如下所示:
public function setDailyChart(\Symfony\Component\HttpFoundation\File\UploadedFile $dailyChart)
{
$this->dailyChart = $dailyChart;
if ($dailyChart) {
$this->updatedAt = new \DateTime('now');
}
return $this;
}
我显式地设置了typehinting的完整路径。现在,我收到以下错误。
AppBundle\Entity\MTI_Cart\AodTechnicalAnalysis::setDailyChart() must be an instance of Symfony\Component\HttpFoundation\File\UploadedFile, instance of Symfony\Component\HttpFoundation\File\File given
对于使用该软件包symfony3必须使用表单类型:VichFileType
如文档描述这里,作为例子:
// ...
use Vich\UploaderBundle\Form\Type\VichFileType;
// ...
public function buildForm(FormBuilderInterface $builder, array $options)
{
// ...
$builder->add('image', VichFileType::class, array(
'required' => false,
'allow_delete' => true, // not mandatory, default is true
'download_link' => true, // not mandatory, default is true
));
}
因此,请在您的formType类中尝试以下操作:
use Vich\UploaderBundle\Form\Type\VichFileType;
//..
->add('dailyChartName', VichFileType::class, array())
->add('twohourChartName', VichFileType::class, array())
希望这个帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句