Ich versuche, einen einfachen Dienst in ZF2 zu schaffen, die ich ViewhelperZF2 Erstellung von einfachen Service und Zugang es durch Viewhelper
Schritt 1 unter Verwendung von in zugreifen kann. Ich habe eine Klasse in src/Application/Service/Service1.php craeted als
folgennamespace 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()
{
}
}
Schritt 2 Ich habe dies wie unten in module.php Datei auf.
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);
});
}
Schritt 3 schließlich ich es aus meiner Sicht Helfer src/Anwendung/View/Helper/Aufruf abc.php test() Methode wie folgt, II Kommentar diese Zeile $this->sm->get('Application\Service\Service1');
da bin geting ist kein Fehler, muss es sein etwas, was mir im Dienst fehlt?
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;
}
}
Step4 dann meinen Test View Helfer in einer Ansicht wie dies rufe ich.
$this->Abc()->test();
Ich bekomme folgenden Fehler.
Fatal error: Call to undefined method Application\Service\Service1::setView() in vendor/zendframework/zendframework/library/Zend/View/HelperPluginManager.php on line 127 Call Stack:
Was fehlt mir?
Bitte zeigen Sie mehr (echten) Code an. Es sieht so aus, als würden Sie die 'Service1'-Instanz irgendwo anstelle von'Abc' zurückgeben. Daher versucht der Ansichtshilfsmechanismus die Ansichtsinstanz in die 'Service1'-Instanz zu injizieren. –
Ich habe den Namen und jede Referenz von Service1 zu My1serve geändert, aber immer noch denselben Fehler erhalten Aufruf zu undefinierter Methode My1serve :: setView(). Ich habe den My1serve-Namen nirgendwo anders in meinem Code verwendet, abgesehen von dem, den ich bereits in Frage gestellt habe. – Developer
Passt perfekt zum Problem. Wir können Ihnen nicht ohne ein wenig mehr Informationen helfen. –