php - 找不到字段 "image"的映射 vichupolader symfony2

标签 php image symfony orm vichuploaderbundle

我正在尝试在图像实体和用户实体之间建立一对一关系,如下所示:

图片:

    /**
 * Image
 *
 * @ORM\Table(name="image")
 * @ORM\Entity(repositoryClass="SocialNetworkBundle\Repository\ImageRepository")
 * @Vich\Uploadable 
 */
class Image {

    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * Get id
     *
     * @return int
     */
    public function getId() {
        return $this->id;
    }

    /**
     * NOTE: This is not a mapped field of entity metadata, just a simple property.
     * 
     * @Vich\UploadableField(mapping="user_image", fileNameProperty="imageName")
     * @Assert\File(
     *     maxSize = "1024k",
     *     mimeTypes = {"image/png", "image/jpeg", "image/jpg"},
     *     mimeTypesMessage = "Please upload a valid PDF or valid IMAGE"
     * )
     * 
     * @var File
     */
    private $imageFile;

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

    /**
     * Set imageName
     *
     * @param string $imageName
     *
     * @return Image
     */
    public function setImageName($imageName) {
        $this->imageName = $imageName;

        return $this;
    }

    /**
     * Get imageName
     *
     * @return string
     */
    public function getImageName() {
        return $this->imageName;
    }

}

用户:

    /**
 * User
 *
 * @ORM\Table(name="user")
 * @ORM\Entity(repositoryClass="UserBundle\Repository\UserRepository") 
 * @Vich\Uploadable
 */
class User extends BaseUser {

    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=255, unique=false)
     * @Assert\Length(min=2, max=100)
     */
    private $name;

    /**
     * @ORM\OneToOne(targetEntity="SocialNetworkBundle\Entity\Image", cascade={"persist", "merge", "remove"})
     * @ORM\JoinColumn(name="image_id", referencedColumnName="id")
     * @Assert\Valid()
     */
    private $image;

    /**
     * Set name
     *
     * @param string $name
     *
     * @return User
     */
    public function setName($name) {
        $this->name = $name;

        return $this;
    }

    /**
     * Get name
     *
     * @return string
     */
    public function getName() {
        return $this->name;
    }

    /**
     * Set image
     *
     * @param \SocialNetworkBundle\Entity\Image $image
     *
     * @return User
     */
    public function setImage(\SocialNetworkBundle\Entity\Image $image = null) {
        $this->image = $image;

        return $this;
    }

    /**
     * Get image
     *
     * @return \SocialNetworkBundle\Entity\Image
     */
    public function getImage() {
        return $this->image;
    }

}

和用户的表单生成器:

    class RegistrationFormType extends BaseType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        parent::buildForm($builder, $options);
        // add your custom field
        $builder->add('name')
             ->add('roles', 'collection', array(
               'type' => 'choice',
               'options' => array(
               'choices' => array(
                   'ROLE_ADMIN' => 'Admin'))))

                ->add('image', VichFileType::class, array(
                    'required' => false,
                    'allow_delete' => true, // not mandatory, default is true
                    'download_link' => true, // not mandatory, default is true
                    ))

                ;

    }

    public function getName()
    {
        return 'user_registration';
    }
}

这个错误出现在我身上:

Mapping not found for field "image"

我该如何解决

最佳答案

  1. 无需为 User 类添加 @Vich\Uploadable,您可以删除该注释。
  2. 在表单类型 RegistrationFormType Image 不是类型 Vich\Uploadable 时,您应该为 Image 类创建一个表单类型让我们将其命名为 ImageType 并将其添加到其中:

      $builder->add('name')
          ->add('image', VichFileType::class, array(
                'required' => false,
                'allow_delete' => true, // not mandatory, default is true
                'download_link' => true, // not mandatory, default is true
                ))
    
            ;
    
  3. RegistrationFormType 中引用您的图像类型:

     ->add('image', new ImageType(),array(...))
    

关于php - 找不到字段 "image"的映射 vichupolader symfony2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40321270/

相关文章:

javascript - 在 .htaccess 中的 URL 重写规则后设置 javascript 文件和 css 文件的路径

php - 添加 css 以打印或回显

java - 在 Android 应用程序中显示图片

php - Symfony2 响应内容必须是字符串或对象实现 __toString(), "boolean"given

postgresql - 学说迁移包和 postgres 架构 : diff does not work properly

javascript - 如何使用Symfony2中的href路径将javascript变量值从twig传递到 Controller ?

javascript - json_encode php 5.5 vs 5.3 与 js 配合不佳

php - 如何使用 PHP 从 MySQL 数据库中读取图像?

image - CQ5 中是否有纵横比裁剪,而不仅仅是自由裁剪?

php - 文件获取内容(https ://url) fails