2016-11-14 66 views
0

我是ZF2的新手。zend框架2:沒有找到名爲「getServiceLocator」的插件

今天我試圖實現一個簡單的數據庫操作。我指的是https://framework.zend.com/manual/2.4/en/user-guide/database-and-models.html

但我得到以下錯誤

的名稱爲「getServiceLocator」一個插件的插件管理器沒有被發現的Zend \的mvc \控制器\插件管理

我缺少什麼?

+0

你能否給我們提供一些代碼,這會有所幫助。但好像你試圖在PluginManager類上調用'getServiceLocator()',你不應該這樣做,但這很明顯,看看你粘貼的錯誤信息。 – Kwido

+0

你不是在模板裏面調用的是你嗎? – Andrew

+3

您使用ZF 2.5或更高版本?如果是這樣,那麼你不能使用$ this-> getServiceLocator();在你的控制器中,因爲這已被刪除。 – Garry

回答

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()

我知道他們中的大多數人不會喜歡這種用法,但它會明確地幫助那些沒有辦法升級/修改他們的代碼的人。

我希望它可以幫助別人。