我是Symfony的新手
我的控制器类中有一个简单的方法indexAction:
function indexAction()
{
$em = $this->getDoctrine()
->getEntityManager();
$prods = $em->getRepository('EcommerceProductBundle:ProductData')->findBy(array('product'=>2));
return $this->render('EcommerceProductBundle:Page:index.html.twig', array(
'prods' => $prods
));
}
事实上,在“个人档案”中可以看到查询并且可以很好地检索实体,这似乎很有效。
Ecommerce\ProductBundle\Entity\ProductData Valid
Ecommerce\ProductBundle\Entity\ProductData Valid
Ecommerce\ProductBundle\Entity\Product Valid
Ecommerce\ProductBundle\Entity\Language Valid
Ecommerce\ProductBundle\Entity\ProductImage Valid
Ecommerce\ProductBundle\Entity\FileImage Valid
Ecommerce\ProductBundle\Entity\Product Valid
Ecommerce\ProductBundle\Entity\Language Valid
根据同一篇文章 Symfony 2 - Access mapped Object property form twig
我尝试在我的twig模板(index.html.twig)中调用 Product 实体的对象,如下所示
{% for prod in prods %}
Price: {{ prod.Product.price }}
{% endfor %}
它运作正常。 如果我尝试调用 ProductImage 实体的对象,则会发生不同的情况,如下所示
{% for prod in prods %}
Image title: prod.ProductImage.title
or
{% for pimg in prod.ProductImage %}
{% endfor %}
我收到此错误:
Method "ProductImage" for object "Ecommerce\ProductBundle\Entity\ProductData" does not exist in EcommerceProductBundle:Page:index.html.twig at line 36
ProductImage Entity 正确映射为产品实体,为什么最后一个完全与第一个相反?
答案 0 :(得分:0)
我解决了在ProductData中调用指向ProductImage Entity的对象。
ProductData 实体的
片段
/**
* @ORM\OneToMany(targetEntity="ProductImage", mappedBy="product_pi", fetch="EAGER", cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="product_id", referencedColumnName="product_id"),
* @ORM\JoinColumn(name="language_id", referencedColumnName="language_id")
* })
*/
protected $products_pi;
index.html.twig 模板
的摘录{% for pimg in prod.getProductsPi %}
{{ pimg.title }}
{% endfor %}