Symfony 3 VichUploaderBundle无法将图像移动到正确的目录

里克·梅森(Rick Mason)

我正在尝试将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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 symfony 3 中使用 VichUploaderBundle 显示树枝图像的问题

来自分类Dev

WordPress作为Symfony(Symfony3)子目录

来自分类Dev

Symfony3命令,无法打开输入文件:symfony

来自分类Dev

无法加载类型提交symfony 3

来自分类Dev

Symfony 3:无法覆盖存储库

来自分类Dev

Symfony3:服务无法获取参数

来自分类Dev

Symfony3 Datatable无法渲染

来自分类Dev

symfony 3 无法设置会话变量

来自分类Dev

Symfony 3 - 无法加载翻译“消息”文件

来自分类Dev

Symfony 3 将实体 A 与实体 B 关联

来自分类Dev

Symfony3 - 将服务引入实体

来自分类Dev

Symfony2-> Symfony3目录结构更改背后的逻辑是什么?

来自分类Dev

Symfony 2/3在实现接口的目录中获取类

来自分类Dev

Symfony 2/3在实现接口的目录中获取类

来自分类Dev

使用LiipImagineBundle和Symfony3找不到图像

来自分类Dev

FOSElasticaBundle for symfony 3?

来自分类Dev

Symfony 3的形式

来自分类Dev

Ajax与Symfony3

来自分类Dev

Symfony 3 中的错误

来自分类Dev

无法阻止Symfony 3控制器中的错误跟踪

来自分类Dev

Symfony 3-无法加载类型表单类型

来自分类Dev

无法使用Composer安装Symfony 3的软件包

来自分类Dev

无法在Symfony 3中使用mongodb(docker)

来自分类Dev

FindAll()无法正常工作,Symfony 3 FosrestBundle API

来自分类Dev

Symfony3在表单生成期间无法加载类型错误

来自分类Dev

我无法在 Symfony 3 中显示嵌入的嵌套表单

来自分类Dev

将多对多与学说/ symfony3的关系

来自分类Dev

将Angular 2与Symfony 3集成

来自分类Dev

将参数传递给Symfony 3 Form configureOptions