繁体   English   中英

检查Symfony 4中是否存在路由

[英]Check if route exists in Symfony 4

如何使用路由名称测试Symfony 4中是否存在给定路由。

routes.yaml

home:
  path: /
  controller: App\Controller\Home::index
  methods: [GET]

login:
  path: /login
  controller: App\Controller\Login::index
  methods: [GET]

控制器 (在此处构成一个exists()方法)

$routes->exists('home'); // true
$routes->exists('login'); // true
$routes->exists('foo'); // false

Symfony 4文档中 ...

检查路线是否存在

在高度动态的应用程序中,可能有必要在使用路由生成URL之前检查路由是否存在。 在这种情况下,请勿使用getRouteCollection()方法,因为这会重新生成路由缓存并减慢应用程序的速度。

相反,尝试生成URL并捕获不存在路由时引发的RouteNotFoundException:

use Symfony\Component\Routing\Exception\RouteNotFoundException;

// ...

try {
    $url = $generator->generate($dynamicRouteName, $parameters);
} catch (RouteNotFoundException $e) {
    // the route is not defined...
}

您可以将该代码放入函数中,然后返回所需的任何内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM