I am trying to create a simple service in zf2 which I can access using in viewhelper
Step1. I have craeted a class in src/Application/Service/Service1.php as follow
namespace ApplicationService;
use ZendServiceManagerServiceLocatorAwareInterface;
use ZendServiceManagerServiceLocatorInterface;
class Service1 implements ServiceLocatorAwareInterface
{
public function __construct()
{
}
public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
{
}
public function getServiceLocator()
{
}
}
Step2 I set this up in module.php file as below.
public function getServiceConfig()
{
return array(
'factories' => array(
'ApplicationServiceService1' => function ($sm) {
return new ApplicationServiceService1($sm);
},
)
);
}
public function onBootstrap($e)
{
$serviceManager = $e->getApplication()->getServiceManager();
$serviceManager->get('viewhelpermanager')->setFactory('Abc', function ($sm) use ($e) {
return new ApplicationViewHelperAbc($sm);
});
}
Step3 finally I am geting it in my view helper src/Application/View/Helper/Abc.php test() method like this, I I comment this line $this->sm->get('ApplicationServiceService1');
there is no error, there must be something which I am missing in service?
namespace ApplicationViewHelper;
use ZendViewHelperAbstractHelper;
class Abc extends AbstractHelper
{
protected $sm;
public function test()
{
$this->sm->get('ApplicationServiceService1');
}
public function __construct($sm) {
$this->sm = $sm;
}
}
Step4 then I am calling my test view helper in one of view like this.
$this->Abc()->test();
I am getting following error.
Fatal error: Call to undefined method ApplicationServiceService1::setView() in vendor/zendframework/zendframework/library/Zend/View/HelperPluginManager.php on line 127 Call Stack:
what am I missing?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…