在我的Symfony2应用程序中,我应该有一个应该有多个图像的产品,但只有一个应该是主图像,它将在一个页面上识别20或某些产品之间的产品。当用户打开特定产品时,将显示其余图像,并显示有关它的所有产品详细信息,包括其余图像。基本上大多数产品网站的工作方式。
我将其映射为:
/**
* @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,我希望它们是标题。知道我怎么能这样做吗?
谢谢!我感谢所有的帮助。
答案 0 :(得分:1)
您应该直接添加引用图像表的mainImage
属性,而不是现在使用的布尔标志。
您可以通过为表单类型提供'property' => 'title'
选项来指定您希望显示每个图像的标题。