Php _u_构造()中的图像类型文件

Php _u_构造()中的图像类型文件,php,symfony,fosuserbundle,Php,Symfony,Fosuserbundle,我试图在有人使用FOSUser Bundle注册后添加默认的配置文件图片。但是,我不知道如何在我的_构造中添加这种文件,因为它是一个需要图像映射的实体 这是我的用户实体: <?php // src/AppBundle/Entity/User.php namespace AppBundle\Entity; use FOS\UserBundle\Model\User as BaseUser; use Doctrine\ORM\Mapping as ORM; use Symfony\Comp

我试图在有人使用FOSUser Bundle注册后添加默认的配置文件图片。但是,我不知道如何在我的_构造中添加这种文件,因为它是一个需要图像映射的实体

这是我的用户实体:

<?php
// src/AppBundle/Entity/User.php

namespace AppBundle\Entity;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @ORM\Entity
 * @ORM\Table(name="fos_user")
 */
class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(type="string")
     *
     * @Assert\NotBlank(message="L'image doit être au format jpg")
     * @Assert\File( maxSize = "100k",mimeTypes={ "image/jpg" })
     */
    private $image;

    public function getImage()
    {
        return $this->image;
    }

    public function setImage($image)
    {
        $this->image = $image;

        return $this;
    }

    public function __construct()
    {
        parent::__construct();
        // your own logic
        $this->image = 'http://lorempixel.com/300/300/';
    }
}
下面的行“$this->image=”;”在图像字段中放入一个字符串,当验证程序尝试使用“@Assert\File(…”)验证该字段时,它失败了,因为它找到了一个字符串而不是一个文件

您需要做的是将文件类型放入该字段,如下所示:

use Symfony\Component\HttpFoundatio\File\UploadedFile;

class User extends BaseUser
.....
    public function __construct()
    {
        parent::__construct();
        $this->image = new UploadedFile("http://lorempixel.com/300/300/", "defaultImg");
    }
}
第一个参数是文件的路径,第二个是该文件的名称,请检查UploadedFile类的Symfony API参考:


我建议您使用@Assert\Image约束而不是@Assert\File约束,这里解释如下:

我看不出任何问题。请描述您遇到的问题,例如,默认图像是否未保留在数据库中或是否不会显示?您试图查找问题的位置是什么?您的输出或日志中是否有任何错误消息?好的,您的回答帮助了我,但现在我遇到了一个新错误:>文件“”不存在500内部服务器错误-FileNotFoundException如图所示,文件未找到,问题在于您的链接,我尝试用chrome打开链接,但我发现404未找到,尝试使用有效链接或下载服务器上所需的图像,将其放入web文件夹,并使用php magic常量DIR引用它,然后使用../。我通过使用DIR常量的路径使其工作!不幸的是,在我尝试验证我的注册表后,我遇到了一个错误:“文件无法上传”。虽然我没有文件上传字段,但我不应该添加一个,因为我希望在调用构造函数时使用默认图像