我有一种方法可以找到所有类别,如下所示
public function showAllCategory()
{
$category = $this->getDoctrine()
->getRepository('AppBundle:Category')
->findAll();
return $category;
}
该函数在我的默认控制器中,返回的对象将分配给模板,如果需要显示我网站的每个页面的类别,我怎样才能避免每次为每个控制器添加此功能?
答案 0 :(得分:2)
因此,请将您的操作放在将在任何地方使用的控制器中(例如MainController
或SiteController
(我通常使用主indexAction()
所在的控制器)。
// MainController.php
public function showAllCategory()
{
$category = $this->getDoctrine()
->getRepository('AppBundle:Category')
->findAll();
return $category;
}
并在你的Twig模板中使用:
{{ render(controller('AppBundle:Main:showAllCategory')) }}
您需要在app/Resources/views/Main/showAllCategory.html.twig
中使用正确的Twig模板(假设您使用的是Symfony2.7
)。
答案 1 :(得分:0)
正如James Akwuh所说,我更喜欢使用Twig Extensions。
在我看来,任何更新控制器的人都很难知道是从视图中调用的。何时是枝条扩展,您已经知道这是视图层中特定使用的逻辑。