0

我是 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

我试图在我的树枝模板 (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 实体像Product Entity一样正确映射,为什么最后一个与第一个相反?

4

1 回答 1

0

我解决了调用 ProductData 中指向 ProductImage 实体的对象。

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 %}
于 2013-07-11T13:42:43.847 回答