컨트롤러 작성자의 매개 변수로 컨트롤러에 전달하는 서비스 클래스 MyService
이 있습니다. 말할 것도없이, 팩토리를 사용하여 컨트롤러를 인스턴스화하고 팩토리의 서비스 위치 지정자를 사용하여 MyService
을 검색 한 다음이를 인스턴스화 된 컨트롤러로 전달합니다.ZF2 -보기에 서비스를 삽입하는 방법?
// factory
$sl = $sl->getServiceLocator();
$ms = $sl->get(MyService::class);
return new MyController($sm);
이제보기에 해당 서비스가 필요합니다. 나는이 같은 (컨트롤러와 유사) 종속성으로 MyService
걸릴 것 뷰 도우미를 만드는 시도 :
// view helper factory
$ms = $sl->get(MyService::class);
return new MyServiceViewHelper($ms);
그러나, 제대로 MyService
를 인스턴스화하지 않습니다. 그것은 말하는 충돌이 :
Catchable fatal error: Argument 1 passed to MyService::__construct() must be an instance of MyRepository, none given, called in /my-path/vendor/zendframework/zend-servicemanager/src/AbstractPluginManager.php
MyService
는 MyServiceFactory
에 의해 자연적으로 제공되는 종속 약 3 저장소를 취합니다. 그러나 어떤 이유로 뷰 도우미가 제대로 호출하지 못하거나 잘못된 것을 인스턴스화 할 수 있습니다.
그래서 내 생각은 다음과 같습니다. 이것은보기에 서비스를 삽입하는 방법이 아닐 수도 있습니다. 이제 묻습니다.
뷰 자체에 서비스를 삽입하려면 어떻게해야합니까?
편집 : "컨트롤러에서 전달"이라고 말하지 마십시오.