RouteCollectionBuilder::setRequirement Symfony 5.1+ 中 RoutingConfigurator 的模拟
RouteCollectionBuilder::setRequirement analog for RoutingConfigurator in Symfony 5.1+
我正在从 Symfony 4 更新到 Symfony 5.4。 Framework Bundle 的其中一项更改是 RouteCollectionBuilder
被弃用,取而代之的是 RoutingConfigurator
。但问题是我曾经为这样的路线设置默认要求:
$routes->import($confDir . '/{routes}' . self::CONFIG_EXTS, '/', 'glob');
$routes->setRequirement('_locale', 'ru|en|ua|es|fr|pl|de|pt|it|be');
但是新的RoutingConfigurator
没有任何方法可以替代setRequirement
。如何使用新配置器为所有路由定义 global/default 要求?
另一件事是 prefix
参数也消失了,所以我需要以某种方式为整个路由组使用前缀(我曾经有 3 个具有不同前缀的不同路由组)。
经过一些研究后自行回答。
因此,新建 RoutingConfigurator::import()
returns ImportConfigurator
class 的实例,您可以在其中设置所有默认参数。
所以现在我的代码如下所示:
$routes
->import($confDir . '/{routes}.yaml', 'glob')
->prefix('/');
$routes
->import($confDir . '/{routing}/*.yaml', 'glob')
->prefix('/{_locale}/')
->requirements(['_locale' => 'ru|en|ua|es|fr|pl|de|pt|it|be']);
$routes
->import($confDir . '/{routing}/' . $this->environment . '/*.yaml', 'glob')
->prefix('/');
我正在从 Symfony 4 更新到 Symfony 5.4。 Framework Bundle 的其中一项更改是 RouteCollectionBuilder
被弃用,取而代之的是 RoutingConfigurator
。但问题是我曾经为这样的路线设置默认要求:
$routes->import($confDir . '/{routes}' . self::CONFIG_EXTS, '/', 'glob');
$routes->setRequirement('_locale', 'ru|en|ua|es|fr|pl|de|pt|it|be');
但是新的RoutingConfigurator
没有任何方法可以替代setRequirement
。如何使用新配置器为所有路由定义 global/default 要求?
另一件事是 prefix
参数也消失了,所以我需要以某种方式为整个路由组使用前缀(我曾经有 3 个具有不同前缀的不同路由组)。
经过一些研究后自行回答。
因此,新建 RoutingConfigurator::import()
returns ImportConfigurator
class 的实例,您可以在其中设置所有默认参数。
所以现在我的代码如下所示:
$routes
->import($confDir . '/{routes}.yaml', 'glob')
->prefix('/');
$routes
->import($confDir . '/{routing}/*.yaml', 'glob')
->prefix('/{_locale}/')
->requirements(['_locale' => 'ru|en|ua|es|fr|pl|de|pt|it|be']);
$routes
->import($confDir . '/{routing}/' . $this->environment . '/*.yaml', 'glob')
->prefix('/');