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('/');