2016-08-24 2 views
-2

私はSymfony2バンドルVichUploaderBundleを使用しようとしています。データベースに保存されているレコードを使用し、Product->getPicture()をリクエストすると、アップロードされたファイル情報が受信されます。しかし、私がそれを作成しようとすると、Symfony2ファイルをアップロードする方法新しいレコードでProduct-> getPicture()を返すnull

$product = new Product(); 
$product->getPicture() 

私はnullオブジェクトを取得し、ファイルをアップロードすることはできません。 私の製品クラスです。

私は新しいレコードで使用しようとする方法
/** 
* @ORM\Entity(repositoryClass="CreLabs\Bundle\ProductBundle\Entity\ProductRepository") 
* @ORM\Table(name="product") 
*/ 
class Product { 

    use ORMBehaviors\Translatable\Translatable; 

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

    /** 
    * @ORM\Column(type="string", length=20, nullable=true) 
    */ 
    protected $sku; 

    /** 
    * @ORM\Column(type="float", scale=2) 
    */ 
    protected $price; 

    /** 
    * @ORM\Column(type="float", scale=2, nullable=true) 
    */ 
    protected $msrp_price; 

    /** 
    * @ORM\Column(type="string", nullable=true) 
    * @Assert\File(mimeTypes={ "image/jpeg" }) 
    */ 
    protected $picture; 

    /** 
    * @ManyToOne(targetEntity="\CreLabs\Bundle\SettingBundle\Entity\Category", inversedBy="products") 
    * @JoinColumn(name="category_id", referencedColumnName="id", onDelete="cascade") 
    * @Assert\NotNull() 
    */ 
    protected $category; 

    /** 
    * @ManyToOne(targetEntity="\CreLabs\Bundle\SettingBundle\Entity\Manufacturer", inversedBy="products") 
    * @JoinColumn(name="manufacturer_id", referencedColumnName="id", onDelete="cascade") 
    * @Assert\NotNull() 
    */ 
    protected $manufacturer; 

    /** 
    * @ORM\Column(type="datetime", nullable=false) 
    */ 
    protected $created_at; 

    /** 
    * @ORM\Column(type="datetime", nullable=true) 
    */ 
    protected $updated_at; 

$entityManager = $this->getEntityManager(); 
$product = new Product(); 

     $file = $product->getPicture(); 
     $fileName = md5(uniqid()).'.'.$file->guessExtension(); 
     $file->move(
      $productDirectory, 
      $fileName 
     ); 
$product->setPicture($fileName); 

guessExtension

上の例外の任意のアイデア?

+0

は、なぜあなたはそれが新しい' Product'インスタンスのnull'なので 'よりも何か他のものであることを期待する新しいレコードを作成まだ何も設定されていない?そして、*あなたが意味することは、*これによりアップロードできません。あなたは絵の具の財産です。オブジェクトではありません。 –

+0

ちょうどVichUploaderBundleのサイトの* Usage * guideの指示に従ってください。https://github.com/dustin10/VichUploaderBundle/blob/master/Resources/doc/usage.md –

+0

新製品写真のプロパティはまだ設定されていません。アップロードは更新レコードに対してのみ機能しますが、新しいレコード作成では機能しません – Staff

答えて

0

見つかり問題

$imageFile = $request->files->get('form')['imageFile']['file']; 
$product->setImageFile($imageFile); 

今のファイルをアップロードすることができ、いつ `picture`プロパティがある場合

+0

更新時に「ファイルが見つかりませんでした」という別の問題が発生します。 解決しました:)ありがとうございます:) – Staff

関連する問題