zf2 Tworzenie prostej usługi i dostęp do niej przez viewhelper
Próbuję utworzyć prostą usługę w zf2, do której mogę uzyskać dostęp za pomocą viewhelper
Krok 1. Mam następujące klasy w src / Application / Service / Service1.php
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()
{
}
}
Krok 2 Ustawiłem to w pliku module.php jak poniżej.
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);
});
}
Krok 3 w końcu dostaję to w mojej metodzie helper src / Application / View / Helper / Abc.php test () w ten sposób, I komentuję ten wiersz$this->sm->get('Application\Service\Service1');
nie ma błędu, musi być coś, czego brakuje mi w służbie?
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;
}
}
Krok 4 następnie dzwonię do pomocnika widoku testowego w jednym z takich widoków.
$this->Abc()->test();
Dostaję następujący błąd.
Fatal error: Call to undefined method Application\Service\Service1::setView() in vendor/zendframework/zendframework/library/Zend/View/HelperPluginManager.php on line 127 Call Stack:
czego mi brakuje?