Symfony 4 easy admin 和 vich uploader bundle 错误

Posted

技术标签:

【中文标题】Symfony 4 easy admin 和 vich uploader bundle 错误【英文标题】:Symfony 4 easy admin and vich uploader bundle error 【发布时间】:2019-05-19 01:38:25 【问题描述】:

我正在使用带有 symfony4 的 easy-admin 的 vich-uploader 包。 设置后,我在尝试删除或更新实体时收到此错误

在属性路径“imageName”处给出“字符串”类型的预期参数,“NULL”。

对于这种常见情况,应用程序的配置是最容易的。 矿山测试实体:

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;


/**
 * @ORM\Entity(repositoryClass="App\Repository\TestRepository")
 * @Vich\Uploadable
 */
class Test

/**
 * @ORM\Id()
 * @ORM\GeneratedValue()
 * @ORM\Column(type="integer")
 */
private $id;

/**
 * @ORM\Column(type="string", length=255)
 */
private $imageName;

/**
 * @Vich\UploadableField(mapping="test_images", fileNameProperty="imageName")
 * @var File
 */
private $imageFile;

/**
 * @ORM\Column(type="datetime")
 * @var \DateTime
 */
private $updatedAt;


public function getId()

    return $this->id;


public function getImageName()

    return $this->imageName;


public function setImageName(string $image)

    $this->imageName = $image;

    return $this;


public function setImageFile(File $image = null)

    $this->imageFile = $image;

    if ($image) 
        $this->updatedAt = new \DateTime('now');
    


public function getImageFile()

    return $this->imageFile;



public function getUpdatedAt()

    return $this->updatedAt;


public function setUpdatedAt(\DateTime $datetime)

    $this->updatedAt = $datetime;

    return $this;


我的轻松管理 yaml 配置

easy_admin:
    entities:
        Test:
            class: App\Entity\Test
            form:
                fields:
                    -  property: 'imageFile', type: 'vich_image' 
            # ...
            list:
                fields:
                    -  property: 'image', type: 'image', base_path: '%app.path.banner_images%' 
            # ...
            show:
                fields:
                    -  property: 'image', type: 'image', base_path: '%app.path.banner_images%' 

【问题讨论】:

【参考方案1】:

试试

public function setImageName(?string $image)

    $this->imageName = $image;

    return $this;

【讨论】:

以上是关于Symfony 4 easy admin 和 vich uploader bundle 错误的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 5 - Easy Admin 3:关联实体有这么多数据时,AssociationField 的负载很重

Symfony 4 EasyAdmin 如何加密密码?

如何定义输入以在 Easy admin 中保存浮点数?

Symfony 4 覆盖 Sonata Admin CRUD 控制器

如何使用 admin-bundle 处理 Symfony 4 中的 perPageOptions 弃用?

Symfony 4 + Sonata + Sonata Doctrine ORM Admin Bundle:错误:没有要处理的元数据类