訪問它的我試圖創建ZF2一個簡單的服務,我可以訪問使用視圖助手ZF2創建簡單的服務,並通過視圖助手
第一步。我在SRC /應用/服務/ Service1.php craeted類如下
namespace Application\Service;
use Zend\ServiceManager\ServiceLocatorAwareInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
class Service1 implements ServiceLocatorAwareInterface
{
public function __construct()
{
}
public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
{
}
public function getServiceLocator()
{
}
}
第二步我module.php文件,如下設置它。這樣
public function getServiceConfig()
{
return array(
'factories' => array(
'Application\Service\Service1' => function ($sm) {
return new \Application\Service\Service1($sm);
},
)
);
}
public function onBootstrap($e)
{
$serviceManager = $e->getApplication()->getServiceManager();
$serviceManager->get('viewhelpermanager')->setFactory('Abc', function ($sm) use ($e) {
return new \Application\View\Helper\Abc($sm);
});
}
第三步:最後我歌廳它在我的視圖助手的src /應用/搜索/助手/ Abc.php test()方法,II評論這條線$this->sm->get('Application\Service\Service1');
沒有錯誤,必須有我在服務中缺少的東西?
namespace Application\View\Helper;
use Zend\View\Helper\AbstractHelper;
class Abc extends AbstractHelper
{
protected $sm;
public function test()
{
$this->sm->get('Application\Service\Service1');
}
public function __construct($sm) {
$this->sm = $sm;
}
}
第四步:然後我打電話看像這樣的我的測試視圖助手。
$this->Abc()->test();
我得到以下錯誤。
Fatal error: Call to undefined method Application\Service\Service1::setView() in vendor/zendframework/zendframework/library/Zend/View/HelperPluginManager.php on line 127 Call Stack:
我錯過了什麼?
請顯示一些更多(真實)的代碼。看起來好像你正在返回'Service1'實例而不是'Abc'。因此,視圖幫助器機制試圖將視圖實例注入到'Service1'實例中。 –
我已將Service1的名稱和每個引用更改爲My1serve,但仍然出現相同的錯誤調用未定義的方法My1serve :: setView()。除了我已經顯示的問題之外,我還沒有在我的代碼中的任何其他地方使用My1serve名稱。 – Developer
非常適合這個問題。沒有更多信息,我們將無法幫助您。 –