为什么Symfony 5.1无法识别在“ routes.php”文件上配置的路由?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么Symfony 5.1无法识别在“ routes.php”文件上配置的路由?相关的知识,希望对你有一定的参考价值。

我在使用Symfony 5.1中的config/routes.php文件尝试配置路由时遇到了困难。

根据Symfony routing documentation,我应该能够在PHP文件中配置路由:

代替在控制器类中定义路由,您可以在单独的YAML,XML或PHP文件中定义它们。主要优点是它们不需要任何额外的依赖性。

但是实际上,如果我将路线放入文件routes.yaml中,Symfony仅会识别路线。

在文件routes.php]中配置的路由>导致错误“找不到“ GET / something”的路由(找不到404)”。运行debug:router时,未列出这些路由。

routes.yaml中配置时,相同的路由效果很好。

在使用Symfony 5.0.8的另一个项目中,通过routes.php进行的路由配置就像一个超级按钮一样工作。

这是我的测试方式:

  1. 创建了一个控制器(省略了,因为它不相关,所以任何控制器都可以做)

  2. 已创建routes.php文件:

  3. //config/routes.php example
    
    use App\Controller;
    use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
    
    return function(RoutingConfigurator $routes)
    
        $routes->add('schools_list', '/schools')
            ->controller([Controller\SchoolController::class, 'list'])
            ->methods(['GET']);
    ;
    
  1. 运行debug:router将导致:
  2.  ---------------- -------- -------- ------ -------------------------- 
      Name             Method   Scheme   Host   Path                      
     ---------------- -------- -------- ------ -------------------------- 
      _preview_error   ANY      ANY      ANY    /_error/code._format  
     ---------------- -------- -------- ------ -------------------------- 
    
  1. routes.yaml内部配置了相同的路由:
  2. #config/routes.yaml
    schools_list:
        path: /schools
        controller: App\Controller\SchoolController::list
        methods: GET
    
  1. 运行debug:router将导致:
  2.  ---------------- -------- -------- ------ -------------------------- 
      Name             Method   Scheme   Host   Path                      
     ---------------- -------- -------- ------ -------------------------- 
      _preview_error   ANY      ANY      ANY    /_error/code._format  
      schools_list     GET      ANY      ANY    /schools                  
     ---------------- -------- -------- ------ -------------------------- 
    

我很难用Symfony 5.1中的config / routes.php文件来配置我的路由。根据Symfony路由文档,我应该能够在PHP文件中配置路由:...

答案

在Symfony <5.1上,默认的Kernel::configureRoutes()看起来像this

以上是关于为什么Symfony 5.1无法识别在“ routes.php”文件上配置的路由?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Symfony 5.1 中安装 orm-pack

Symfony 5.1:无法识别的字段:activation_token

无法使用 Symfony 5.1 创建数据库:找不到驱动程序 [关闭]

在Symfony 4中使用WebPack Encore定义后无法识别JavaScript对象

Symfony2 注销 CSRF 保护:csrf_provider 无法识别

Symfony 无法识别通过 Guzzle multipart/form-data 请求上传的多个文件