我只是將我的ZF2更新爲V2.1.4,以便我可以使用Zend \ Form類的init方法將ServiceLocator注入到FieldSet中,如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() {
.........
}
}
我的問題是後續:
內UserFieldset的:: init()方法,$這個 - >服務定位不像從控制器獲取服務時一樣,Zend \ ServiceManager \ ServiceManager的實例。 該實例是Zend \ Form \ FormElementManager並使用var_dump,請參閱它沒有任何我的Zend配置的服務。
如何在使用DI的Fieldset中使用Zend \ ServiceManager \ ServiceManager實例?
請幫幫我。
這個解決方案已經考慮過了,我想在不使用這個技術的情況下注入(如顯示Zend文檔版本2.1)。 – josepmra
@josepmra你在調用表單本身的形式ServiceManager?接口在那裏,因爲可能在ZF的某個地方有一個初始化器,它會在構建之後調用getter。但是你需要從ServiceManager調用表單!然後注射將會發生。 – Sam