RouteCollectionBuilder::setRequirement模拟Symfony 5.1+中的Routin



我正在从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');

但新的CCD_ 3没有任何方法可以取代CCD_。如何使用新配置器定义所有路由的全局/默认要求?

另一件事是prefix参数也消失了,所以我需要以某种方式为整个路由组使用前缀(我过去有3个不同的路由组,它们有不同的前缀(。

经过一些研究后的自我回答。

因此,新的RoutingConfigurator::import()返回ImportConfigurator类的一个实例,您可以在其中设置所有默认参数。

现在我的代码是这样的:

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

最新更新