我有一个方法来找到所有类别如下
public function showAllCategory()
{
$category = $this->getDoctrine()
->getRepository('AppBundle:Category')
->findAll();
return $category;
}
函数在我的默认控制器中,返回的对象将分配给模板,如果需要为我网站的每个页面显示categoryes,我如何避免每次为每个控制器添加此函数?
所以把你的动作放在一个控制器,将在任何地方使用(如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
)。
正如James Akwuh所说,我更喜欢使用Twig Extensions。
在我看来,它可以是困难的任何人谁将更新控制器,知道正在从视图调用。当它是一个分支扩展时,你已经知道它是在视图层中专门使用的一些逻辑。