【问题标题】:Symfony 3.3.3 - default controller and containerSymfony 3.3.3 - 默认控制器和容器
【发布时间】:2017-12-07 20:35:18
【问题描述】:

我下载了 Symfony 的最新稳定版本 (3.3.3),但在启动时出现错误:

Attempted to call an undefined method named "getParameter" of class "AppBundle\Controller\DefaultController".

这是:

'base_dir' => realpath($this->getParameter('kernel.project_dir')).DIRECTORY_SEPARATOR,

3.3.3 版本之前的 Symfony 控制器扩展

Symfony\Bundle\FrameworkBundle\Controller\Controller.php

现在扩展:

Symfony\Bundle\FrameworkBundle\Controller\AbstractController\AbstractController.php

那么...如何从容器中获取数据?在文档中(3.3 和 4.0 版本)Controller 扩展了 Controller,而不是 AbstractController。

如果我将 AbstractController 更改为 Controller 应用程序运行良好,但我应该更改吗?

【问题讨论】:

  • 视情况而定。 AbstractController 仅提供对某些基本服务的访问。没有对容器的一般访问权限。这个想法是您将控制器定义为服务,然后注入您需要的任何其他服务/参数。检查手册中的自动接线。这是一个真正针对 Symfony 4 的重大变化。您可以继续使用“原始”控制器基类,一切应该和以前一样工作。查看 FrameworkBundle/Controller 代码也很有指导意义。
  • 我也有同样的问题。安全模块的相同问题不起作用。我回到3.2.x版本
  • 我在新生成的项目中遇到了同样的问题。运行 composer create-project 后已经直接坏掉了。

标签: php symfony


【解决方案1】:

今天发布的 3.3.4 版本解决了这个问题和其他问题。 这是新闻:http://symfony.com/blog/symfony-3-3-4-released 要更正错误,您必须使用 composer 进行更新

composer update

【讨论】:

    【解决方案2】:

    他们已经在 symfony 标准版上使用了reverted the change,所以我想说回到Controller 而不是AbstractController 是要走的路。

    【讨论】:

      【解决方案3】:

      您可以使用以下命令创建具有工作版本的项目: php symfony new project_name 3.3.2 当前版本现已损坏。

      【讨论】:

        猜你喜欢
        • 2013-06-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-03
        • 1970-01-01
        • 2017-02-17
        • 1970-01-01
        • 1970-01-01
        • 2017-11-10
        相关资源
        最近更新 更多