Z372를 V2.1.4로 업데이트하여 Zend \ Form 클래스의 init 메소드를 사용하여 ServiceSet을 호출 할 수 있습니다. Zend documentation을 설명합니다.Zend Framework 2 서비스 관리자를 필드 세트에 넣기
데이터베이스 드라이버 및 서비스에 대한 정의가 Global.php 및 Module.php 파일에 있으며, documentation에 대해서도 설명합니다. 이 서비스는 모든 프로젝트에서 잘 작동합니다.
class UserFieldset extends Fieldset implements ServiceLocatorAwareInterface{
protected $serviceLocator;
public function setServiceLocator(ServiceLocatorInterface $sl) {
$this->serviceLocator = $sl;
}
public function getServiceLocator() {
return $this->serviceLocator;
}
public function init() {
var_dump($this->serviceLocator);
}
public function __construct() {
.........
}
}
내 문제는 다음과 같습니다 :
이
내 FIELDSET 코드입니다 UserFieldset의 내부 :: 초기화() 메소드는, $ this-는> serviceLocator은 아니다 Zend \ ServiceManager \ ServiceManager의 인스턴스는 컨트롤러에서 서비스를받을 때와 같습니다. 인스턴스가 Zend \ Form \ FormElementManager이고 var_dump를 사용하여 Zend 구성에 대한 서비스가없는 것을 확인하십시오.
DI를 사용하여 Fieldset 내에 Zend \ ServiceManager \ ServiceManager 인스턴스를 만들 수 있습니까?
도와주세요.
이 솔루션은 이미 숙고되었습니다.이 기술을 사용하지 않고 주입하고 싶습니다 (Zend documentation version 2.1). – josepmra
@josepmra 당신은 폼 자체를 ServiceManager 형태로 호출하고 있습니까? 아마도 ZF의 어딘가에 건설 후 getter를 호출 할 초기화 기가 있기 때문에 인터페이스가 있습니다. 그러나 ServiceManager에서 Form을 호출해야합니다! 그러면 주사가 일어날 것입니다. – Sam