2

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

路线.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
4

1 回答 1

2

来自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...
}

您可以将该代码放入函数中并返回您需要的任何内容。

于 2019-06-27T00:30:59.840 回答