Symfony I';我定义了一个bundle控制器和路由,但是我得到;错误:控制器既不作为服务也不作为类存在;

Symfony I';我定义了一个bundle控制器和路由,但是我得到;错误:控制器既不作为服务也不作为类存在;,symfony,symfony4,Symfony,Symfony4,我在Symfony 4的模块目录下创建了一个控制器类。我的包的路由文件引用了它。我的根目录的路由文件包括捆绑包的路由文件 但是我得到一个错误500,“错误:控制器既不作为服务也不作为类存在” 为什么? root/src/MyBundle/Resources/config/routing.YML route_name: path: /test3 controller: MyBundle\Controller\ExportCsvController::exportProductInCsv

我在Symfony 4的模块目录下创建了一个控制器类。我的包的路由文件引用了它。我的根目录的路由文件包括捆绑包的路由文件

但是我得到一个错误500,“错误:控制器既不作为服务也不作为类存在”

为什么?

root/src/MyBundle/Resources/config/routing.YML

route_name:
  path: /test3
  controller: MyBundle\Controller\ExportCsvController::exportProductInCsv
  options:
    expose: true
route_name:
      resource: "@MyBundle/Resources/config/routing.yml"
      prefix:   /
root/config/routes/my_custom_routes.YML

route_name:
  path: /test3
  controller: MyBundle\Controller\ExportCsvController::exportProductInCsv
  options:
    expose: true
route_name:
      resource: "@MyBundle/Resources/config/routing.yml"
      prefix:   /
root/src/MyBundle/Controller/ExportCsvController.PHP

<?php
namespace MyBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class ExportCsvController extends Controller
{
    public function exportProductInCsv(): Response
    {
        return new Response(
            '<html><body>test</body></html>'
        );
    }
}

这是一个缓存问题(Symfony缓存)。使用以下命令解决:
php-bin/console-cache:clear--env=prod
。现在正确地考虑了文件
root/src/MyBundle/Resources/config/routing.YML
的内容:)。

包通常不是自动连接的。通常,您会有一个bundle扩展名,该扩展名依次加载bundles services.yaml文件,该文件将定义控制器服务。你可以用“bin/console debug:container MyBundle以验证这是否是问题所在。
php bin/console cache:clear--env=prod
很高兴您能让它正常工作。清除缓存也是我的神奇解决方案,其工作时间惊人。请注意,在Symfony中通常不再生成捆绑包,除非其目的是与多个应用程序共享捆绑包。文档讨论了创建捆绑包和所有服务内容。