8

我想从我的数据库中生成一个导航,我将路线的名称存储为链接目标。我的控制器只是从数据库中获取所有必要的导航条目并返回直接在我的树枝模板中使用的行。

/**
* @Route("/")
* @Template()
*/
public function myAction() {
    $em = $this->getDoctrine()->getManager();
    $navi = $em->getRepository('myBundle:Navigation')->findAll();
    return array("navi" => $navi);
}

因此,可能存在导致错误 500 的路由不存在。

我需要一种方法来检查命名路由是否存在。我试图用它来测试它,{% if path('routeName') is defined %} ... {% endif %}但这不起作用。

AFAIK 我的控制器可以捕获 Twig 异常,但我只想让 twig忽略无效的导航条目。任何想法?

4

1 回答 1

15

您可以制作自定义树枝功能(查看链接以获取更多信息)。检查给定名称是否为有效路由的函数:

function routeExists($name)
{
    // I assume that you have a link to the container in your twig extension class
    $router = $this->container->get('router');
    return (null === $router->getRouteCollection()->get($name)) ? false : true;
}

但我不确定以这种方式(在数据库中)处理导航是否是个好主意。也许你最好用别的东西?

于 2013-06-21T19:22:41.913 回答