Ran*_*ngh 11 php symfony doctrine-orm twig
我有class categroies和class Products.
在我的存储库中我有功能
getProducts($categoryid,$location)
我需要像这样循环在树枝模板中
{% for category in categories %}
--{{ category.name }}--
{% for product in getProducts(category.id,location) %}
--{{ product.name }}--
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
还是有更好的方法
Kin*_*nch 19
你不应该.这是业务逻辑,不应该出现在模板中.一种解决方案是在控制器和模板调用中创建新操作
{% render '@MyBundle:Product:list' with {category: category.id} %}
Run Code Online (Sandbox Code Playgroud)
这是一个非常古老的问题,但我错过了一个非常简单的解决方案.
可以将repo对象传递给twig并从twig调用repo public方法,如下所示:
在你的控制器中
$oCatRepo = $this->getDoctrine()->getManager()->getRepository('AppBundle:Categories');
....
return $this->render('product_list.html.twig', array('oCatRepo' => $oCatRepo));
Run Code Online (Sandbox Code Playgroud)
然后在你的树枝模板中:
{{ oCatRepo.getProducts(category.id, location) }}
Run Code Online (Sandbox Code Playgroud)
我说这是可能的,许多人会争辩说模板应该只显示数据并让控制器收集数据.我个人不介意让我的模板自己获取数据.