symfony2为控制器创建可恢复类和函数的最佳实践

时间:2015-09-09 07:45:45

标签: php symfony twig

我有一种方法可以找到所有类别,如下所示

public function showAllCategory()
{
    $category = $this->getDoctrine()
        ->getRepository('AppBundle:Category')
        ->findAll();

    return $category;

}

该函数在我的默认控制器中,返回的对象将分配给模板,如果需要显示我网站的每个页面的类别,我怎样才能避免每次为每个控制器添加此功能?

2 个答案:

答案 0 :(得分:2)

因此,请将您的操作放在将在任何地方使用的控制器中(例如MainControllerSiteController(我通常使用主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

在我看来,任何更新控制器的人都很难知道是从视图中调用的。何时是枝条扩展,您已经知道这是视图层中特定使用的逻辑。