Symfony 2 - Twig无法访问正确的映射实体对象

时间:2013-07-10 15:00:27

标签: php symfony entity twig template-engine

我是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 正确映射为产品实体,为什么最后一个完全与第一个相反?

1 个答案:

答案 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 %}