我只是将我的 ZF2 更新到 V2.1.4,以便我可以使用 Zend\Form 类的 init 方法将 ServiceLocator 注入 FieldSet,如Zend 文档所述。
我在 Global.php 和 Module.php 文件中有数据库驱动程序和服务的定义,还解释了文档。该服务在所有项目中都可以正常工作。
这是我的字段集代码:
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() 方法内部,$this->serviceLocator 不是 Zend\ServiceManager\ServiceManager 的实例,就像从控制器获取服务时那样。该实例是 Zend\Form\FormElementManager 并使用 var_dump,看到它没有我的 Zend 配置的任何服务。
如何使用 DI 在 Fieldset 中拥有 Zend\ServiceManager\ServiceManager 实例?
请帮我。