zf2 erstellen von einfachen Dienst und den Zugriff durch den viewhelper

Ich bin versucht, zu erstellen eine einfache service in zf2 die ich zugreifen kann mit in den viewhelper

Schritt 1. Ich habe craeted eine Klasse in src/Application/Service/Service1.php als Folgen

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()
        {

        }

    }

Step2 ich setzen Sie diese in module.php Datei als unten.

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 bin ich geting es in meinem view Helfer src/Application/View/Helper/Abc.php test () - Methode wie diese, ich ich diese Zeile auskommentieren $this->sm->get('Application\Service\Service1'); es gibt keine Fehler, es muss etwas sein, was ich bin 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;

        }
    }

Schritt 4 dann rufe ich meine test-view-helper in eine Ansicht wie diese.

$this->Abc()->test();

Erhalte ich folgende Fehlermeldung.

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 bin ich?

Bitte zeigen Sie etwas mehr (real) - code. Es scheint, wie, die Sie zurückgeben, die Service1 Instanz irgendwo statt Abc. So, die view-helper-Methode versucht, um zu injizieren, die view-Instanz in der Service1 Instanz.
Ich änderte den Namen, und jede Referenz von Service1 auf My1serve aber noch immer die gleiche Fehlermeldung Call to undefined method My1serve::setView(). Ich habe nicht verwendet die My1serve Namen irgendwo sonst in meinem code auseinander, die eine, die ich bereits zeigte, in Frage.
Passt perfekt zu dem problem. Wir werden nicht in der Lage, Ihnen zu helfen, ohne ein wenig mehr Informationen.
Kein problem, ich habe die Lösung gefunden. siehe die Antwort weiter unten. vielen Dank für Ihre Zeit sowieso.

InformationsquelleAutor Developer | 2012-09-24

Schreibe einen Kommentar