我一直在開發一個項目中的Zend 1,但決定移動到Zend的2拿東西就像優勢等事件我如何從我自己的圖書館中的Zend 2進入getServiceLocator
我最初的問題是,我似乎無法找到任何關於如何以我需要使用它們的方式使用模型的教程。
什麼我是被路由到AS/API/SOAP的API控制器
這種肥皂端點加載具有所有我想通過SOAP暴露
namespace MyProject\Controller;
$view = new ViewModel();
$view->setTerminal(true);
$view->setTemplate('index');
$endpoint = new EndpointController();
$server = new Server(
null, array('uri' => 'http://api.infinity-mcm.co.uk/api/soap')
);
$server->setObject($endpoint);
$server->handle();
和方法的類我控制器,包含所有的功能是
namespace MyProject\Controller;
class EndpointController
{
public function addSimpleProducts($products)
{
}
}
現在我希望能夠做的就是從這個EndpointController內訪問我的產品模型。
所以我嘗試這樣做:
protected function getProductsTable()
{
if (!$this->productsTable) {
$sm = $this->getServiceLocator();
$this->productsTable= $sm->get('MyProject\Model\ProductsTable');
}
return $this->productsTable;
}
當我運行此我得到的致命錯誤EndpointController :: getServiceLocator()是不確定的。
我對Zend 2很新,但在Zend 1中感覺這將是我發展過程中的一個非常小的步驟,我即將解僱zend 2並返回到zend 1甚至切換到symfony 2其中使用簡單的教義......
有幫助嗎?
我在我的ZF2庫中看不到'ServiceLocatorAwareTrait'。這種奢侈品可能還需要特定版本的ZF2? – 2013-03-11 15:44:12
好,所以你說服務管理器應該自動注入自己,但是當我用你建議的改變運行我的代碼時,我只是調用一個非對象的成員函數get(),這是$ this-> sm->得到線... – Matthew 2013-03-11 15:58:06
@MarshallHouse,它是2.1.3版本的一部分。見[github](https://github.com/zendframework/zf2/blob/release-2.1.3/library/Zend/ServiceManager/ServiceLocatorAwareTrait.php) – 2013-03-11 16:04:15