exception - 测试 Twig 模板中是否存在路由 (Symfony 2)

标签 exception symfony path twig routes

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

/**
* @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 异常,但我只想让 twig 忽略无效的导航条目。任何的想法?

最佳答案

您可以制作自定义 Twig 功能(查看 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;
}

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

关于exception - 测试 Twig 模板中是否存在路由 (Symfony 2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17241235/

相关文章:

Java - 在调用堆栈中处理更高的异常?

java - 我的 try 语句之后的所有内容都必须包含在该 try 语句中才能访问其中的变量吗?

mysql - 如何个性化ACL表名?

jquery - 如何使用 jQuery 获取剥离的图像名称?

python - Bash 中的路径错误

java - eclipse 和路径

PHP try catch block 不捕获

php - 请求->get() 提供的 Psalm 可能为空值

Symfony 2.1.7 和学说迁移 bundle 错误

java - org.springframework.http.converter.HttpMessageNotWritableException 找不到类型为 : class 的返回值的转换器