Exception 测试细枝模板中是否存在路由(Symfony 2)

Exception 测试细枝模板中是否存在路由(Symfony 2),exception,symfony,path,twig,routes,Exception,Symfony,Path,Twig,Routes,我想从我的数据库中生成一个导航,在那里我将路线的名称存储为链接目标。 我的控制器只是从数据库中获取所有必要的导航条目,并返回直接在我的小树枝模板中使用的行 /** * @Route("/") * @Template() */ public function myAction() { $em = $this->getDoctrine()->getManager(); $navi = $em->getRepository('myBundle:Navigation')

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

/**
* @Route("/")
* @Template()
*/
public function myAction() {
    $em = $this->getDoctrine()->getManager();
    $navi = $em->getRepository('myBundle:Navigation')->findAll();
    return array("navi" => $navi);
}
因此,可能不存在导致错误500的路由

我需要一个方法来检查命名路由是否存在。如果路径('routeName')被定义为%},我试图用
{%来测试它。。。{%endif%}
但这不起作用


AFAIK我的控制器可以捕获Twig异常,但我只希望Twig忽略无效的导航条目。有什么想法吗?

您可以自定义细枝功能(有关详细信息,请查看链接)。用于检查给定名称是否为有效路由的函数:

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;
}

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

谢谢,现在它可以用了!这对我帮助很大。下一步是缓存导航条目以减轻数据库的负载。
returnnull===$router->getRouteCollection()->get($name)足够好了。:)@HelpNeeder我会说
返回null!==$路由器->…
:)根据这条评论,最好抓住像@imanali这样的例子:可能重复的