use*_*145 7 updates symfony deprecation-warning symfony5
我正在将 Symfony 项目从 5.0 更新到 5.1 有一个弃用提示说RouteCollectionBuilder
已弃用,RoutingConfigurator
应改为使用。
确切的消息是
由于 symfony/routing 5.1: "Symfony\Component\Routing\RouteCollectionBuilder" 类已被弃用,请改用 "Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator"。
这应该如何实施?我应该更改供应商文件夹中的代码吗?
小智 19
您需要更新Kernel
class 以开始使用RoutingConfigurator
而不是RouteCollectionBuilder
.
您可以通过更新配方 ( composer recipes:install symfony/framework-bundle --force
)来自动执行此操作。
arn*_*rno 14
如果有人在修复此折旧时遇到问题
Since symfony/routing 5.1: The "Symfony\Component\Routing\RouteCollectionBuilder" class is deprecated, use "Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator" instead.
Run Code Online (Sandbox Code Playgroud)
这是我更新的文件src/Kernel.php
<?php
namespace App;
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
class Kernel extends BaseKernel
{
use MicroKernelTrait;
protected function configureContainer(ContainerConfigurator $container): void
{
$container->import('../config/{packages}/*.yaml');
$container->import('../config/{packages}/'.$this->environment.'/*.yaml');
if (is_file(\dirname(__DIR__).'/config/services.yaml')) {
$container->import('../config/services.yaml');
$container->import('../config/{services}_'.$this->environment.'.yaml');
} elseif (is_file($path = \dirname(__DIR__).'/config/services.php')) {
(require $path)($container->withPath($path), $this);
}
}
protected function configureRoutes(RoutingConfigurator $routes): void
{
$routes->import('../config/{routes}/'.$this->environment.'/*.yaml');
$routes->import('../config/{routes}/*.yaml');
if (is_file(\dirname(__DIR__).'/config/routes.yaml')) {
$routes->import('../config/routes.yaml');
} elseif (is_file($path = \dirname(__DIR__).'/config/routes.php')) {
(require $path)($routes->withPath($path), $this);
}
}
}
Run Code Online (Sandbox Code Playgroud)
从 Symfony 5.4 开始,根据 symfony/framework-bundle 配方,Kernel.php 可以为空,如下所示:
<?php
namespace App;
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
class Kernel extends BaseKernel
{
use MicroKernelTrait;
}
Run Code Online (Sandbox Code Playgroud)
源配方: https://github.com/symfony/recipes/blob/master/symfony/framework-bundle/5.4/src/Kernel.php
由于某种原因,应用配方 ( composer recipes:install symfony/framework-bundle --force
) 并没有更新内核文件。但通过将其替换为上述内容,对我有用并修复了弃用警告。