我已经定义了捆绑控制器和路由,但我得到“错误:控制器既不作为服务也不作为类存在”

问题描述 投票:0回答:2

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

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

为什么?

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

route_name:
  path: /test3
  controller: MyBundle\Controller\ExportCsvController::exportProductInCsv
  options:
    expose: true

root/config/routes/my_custom_routes.YML

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 symfony4
2个回答
4
投票

这是缓存(Symfony 缓存)的问题。使用此命令解决:

php bin/console cache:clear --env=prod
。现在,文件的内容
root/src/MyBundle/Resources/config/routing.YML
已被正确考虑:)。


0
投票

我从同事那里得到的代码也遇到了同样的错误。经过尝试很多事情后我发现了问题:

class SomeController extends AbstractController
{
    protected function __construct(
        #[Autowire(param: "kernel.project_dir")]
        private string $rootDir,
    ) {
    }

受保护构造函数!

© www.soinside.com 2019 - 2024. All rights reserved.