zf2 Création de service simple et accès via viewhelper
Je suis en train de créer un service simple dans zf2 qui je peux accéder à l'aide en viewhelper
Etape 1. J'ai installer une classe dans src/Application/Service/Service1.php comme suivre
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()
{
}
}
Etape 2 j'ai mis cela dans module.php fichier comme ci-dessous.
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);
});
}
Etape 3 enfin je suis geting dans mon helper de vue src/Application/View/Helper/Abc.php méthode test() comme ça, je-je mettre cette ligne en commentaire $this->sm->get('Application\Service\Service1');
il n'y a pas d'erreur, il doit y avoir quelque chose qui me manque dans le service?
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;
}
}
Etape 4 alors je vais appeler mon test helper de vue dans un de vue comme cela.
$this->Abc()->test();
Je suis d'erreur suivant.
Fatal error: Call to undefined method Application\Service\Service1::setView() in vendor/zendframework/zendframework/library/Zend/View/HelperPluginManager.php on line 127 Call Stack:
ce qui me manque?
source d'informationauteur Developer
Vous devez vous connecter pour publier un commentaire.
Une alternative, en PHP 5.4, sans configuration spécifique, serait d'utiliser traits:
extrait de module.config.php:
MyHelper.php:
changer la ligne
$this->sm->getServiceLocator()->get('Application\Service\Service1');
ci-dessous la méthode