【问题标题】:Namespace problems on Symfony3 upgradeSymfony3 升级的命名空间问题
【发布时间】:2015-12-19 16:48:57
【问题描述】:

我目前正在尝试将我的 Symfony2 应用程序升级到 Symfony3。我有一个SecurityController 覆盖了FOSUserBundle\SecurityController

namespace Acme\MyBundle\Controller;

use Symfony\Component\DependencyInjection\ContainerAware;

class SecurityController extends ContainerAware
{
    // ...
}

但我得到一个ClassNotFoundException

尝试从命名空间“Symfony\Component\DependencyInjection”加载类“ContainerAware”。
您是否忘记了另一个命名空间的“使用”语句?

是否有任何我在upgrade notes 中找不到的更改。有人可以指点我解决这个问题的方法吗?

【问题讨论】:

  • 不再有 ContainerAware 类。但更有趣的是,在 S3 下加载的唯一 FOSUserBundle 版本是开发分支。您很可能使用不兼容的 1.3 分支。归根结底,将基于 FOSUserBundle 的应用程序升级到 S3 至少可以说有点挑战。
  • 您认为我使用的是 FOSUB 1.3 吗?因为我没有,所以我在 2.0 分支使用 dev:"friendsofsymfony/user-bundle": "~2.0@dev"。感谢有关删除 ContainerAware 的提示。

标签: namespaces upgrade symfony


【解决方案1】:

由于此 PR 的更改,ContainerAware 在 2.8 中已被弃用并在 3.0 中被删除以支持 ContainerAwareTrait

【讨论】:

  • 谢谢!你知道如何使用ContainerAwareTrait 的来源吗?仅仅扩展它而不是 ContainerAware 很可能还不够?
  • 你可以像这个例子一样使用它:github.com/symfony/symfony/blob/…
猜你喜欢
  • 1970-01-01
  • 2013-03-08
  • 2011-02-05
  • 2016-08-27
  • 2017-08-13
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多