-2

Symfony2 バンドル VichUploaderBundle を使用しようとしています。データベースに保存されているレコードを使用してリクエストするProduct->getPicture()と、アップロードされたファイル情報を受け取ります。でも作ろうとすると

$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 の例外

何か案は?

4

1 に答える 1

0

問題が見つかりました

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

ファイルをアップロードできるようになり、新しいレコードを作成するとき

于 2016-08-24T09:38:27.800 に答える