2012-01-14 95 views
2

在我的Symfony2應用程序中,我應該有一個產品應該有多個圖像,但只有一個應該是主要圖像,它將識別產品之間20或某些產品頁。其他圖像將在用戶打開特定產品時顯示,並且所有關於該產品的產品詳細信息都會顯示,其中包括其餘圖像。基本上大多數產品網站的工作原理。Symfony2和Doctrine2產品和圖像映射效率不高管理

我制訂它:

/** 
* @ORM\Entity() 
* @ORM\Table(name="product") 
* @ORM\HasLifecycleCallbacks() 
*/ 
class Product 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\Column(type="string") 
    */ 
    protected $title; 

    /** 
    * @ORM\ManyToMany(targetEntity="Productimage") 
    * @ORM\JoinTable(name="productimage_map", 
    *  joinColumns={@ORM\JoinColumn(name="product_id", referencedColumnName="id")}, 
    *  inverseJoinColumns={@ORM\JoinColumn(name="image_id", referencedColumnName="id")} 
    *  ) 
    */ 
    protected $images;  

    public function __construct() 
    { 
     $this->images = new \Doctrine\Common\Collections\ArrayCollection(); 
    } 
} 

產品圖片實體:

/** 
* @ORM\Entity(repositoryClass="Webmuch\ShopBundle\Repository\ProductimageRepository") 
* @ORM\Table(name="productimage") 
* @ORM\HasLifecycleCallbacks() 
*/ 
class Productimage 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

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

    /** 
    * @ORM\Column(type="datetime") 
    */ 
    protected $created; 

    /** 
    * @ORM\Column(type="boolean") 
    */  
    protected $mainImage; 
} 

好嗎工作,但是當我創建一個表單,用於創建一個新的項目它顯示了一個多用的所有選擇Itemimage表的行。我該如何製作一個系統,我可以從項目創建表單本身上傳圖像,而不是選擇要從包含1000個圖像的多選表單元素中的項目進行映射的圖像。

我還附上了我想要解釋的圖片。目前只有2張圖片,但只有幾百種產品會成千上萬張圖片。

我希望我已經設法解釋了問題所在。這對我來說非常混亂。請幫我解決一下這個。

此外,多個選擇元素顯示id,我希望他們是標題。任何想法我怎麼能做到這一點?

謝謝!我感謝所有的幫助。

cut out from the rendered form

回答

1

您應該添加屬性,而不是直接引用你現在正在使用的布爾標誌的你的圖像表。

通過向表單類型提供'property' => 'title'選項,您可以指定要顯示的每個圖像的標題。

+0

非常感謝您的回覆。 mainImage布爾值只是爲了找出在其他頁面上使用哪個圖像來識別產品。例如:在相關項目中,在主頁上,在類別頁面上等。另外,如何將多個圖像添加到一個產品而無需通過該多個選擇表單元素。我想簡單地添加一個項目與多個圖像。首先項目這個複雜。再次感謝。 – Aayush 2012-01-14 20:40:37