ZF2 を V2.1.4 に更新して、 Zend のドキュメントで説明されているように、Zend\Form クラスの init メソッドを使用して ServiceLocator を FieldSet に挿入できるようにします。
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 インスタンスを作成するにはどうすればよいですか?
私を助けてください。