【问题标题】:zend framework 2 : A plugin by the name "getServiceLocator" was not foundzend 框架 2:找不到名为“getServiceLocator”的插件
【发布时间】:2016-11-16 23:55:34
【问题描述】:

我是 ZF2 的新手。

今天我试图实现一个简单的数据库操作。我指的是https://framework.zend.com/manual/2.4/en/user-guide/database-and-models.html

但我收到以下错误

在插件管理器 Zend\Mvc\Controller\PluginManager 中找不到名为“getServiceLocator”的插件

我错过了什么?

【问题讨论】:

  • 您能否提供一些代码给我们,这会有所帮助。但是您似乎尝试在 PluginManager 类上调用 getServiceLocator(),您不应该这样做,但这很明显,请参阅您粘贴的错误消息。
  • 你不是在模板里面叫那个吗?
  • 您使用的是 ZF 2.5 或更高版本吗?如果是这样,那么您不能使用 $this->getServiceLocator();在您的控制器中,因为它已被删除。
  • 如果需要帮助,您将不得不发布更多代码 :)

标签: zend-framework2


【解决方案1】:

请注意:ZF2 长期以来一直在警告在代码中使用 $this->getServiceLocator() 会贬值,因此我们应该尊重它。

但我们中的一些人仍然有使用旧代码开发的项目,我们现在无法更改所有这些,因此必须找到这个解决方案。

尝试将"zendframework/zend-mvc": "2.6.3" 添加到composer.json 文件中require 列表下,如下所示:

"require": {
    ....
    "zendframework/zendframework": "~2.5",
    "zendframework/zend-mvc": "2.6.3",
    ....
}

这将允许您在控制器中使用$this->getServiceLocator()

这样做的作用是 - 即使框架版本不断更新,zend-mvc 将始终在您的代码中保持旧状态并支持使用 $this->getServiceLocator()

我知道他们中的大多数人不会喜欢这种用法,但它肯定会帮助那些无法升级/修改代码的人。

我希望它对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    相关资源
    最近更新 更多