我想从我的数据库生成一个导航,我将路由的名称存储为链接目标。 我的控制器只是从数据库中获取所有必需的导航条目,并返回直接在我的树枝模板中使用的行。
/**
* @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我的Controller可以捕获Twig Exceptions但我只想要忽略无效的导航条目。有什么想法吗?
答案 0 :(得分:14)
您可以制作自定义树枝功能(查看this链接以获取更多信息)。检查给定名称的函数是否为有效路径:
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;
}
但我不确定以这种方式(在数据库中)处理导航是个好主意。也许你最好用别的东西?