我一直在开发一个项目中的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