私の Zend\Form\Fieldset AddressFieldset では、\Zend\Form\Element\Select() に対して Zend\Db\TableGateway\AbstractTableGateway BundeslandTable が必要です。
そこで、この AddressFieldset に \Zend\ServiceManager\ServiceManagerAwareInterface を実装し、__construct() の代わりに init() を使用します。
そして、module.config.php (テストされた「form_elements」だけでなく、「service_manager」でも)
'form_elements' => array(
'factories' => array(
'MyFormway\Form\Fieldset\Address' => function($sm) {
$addressFieldset = new MyFormway\Form\Fieldset\AddressFieldset();
$addressFieldset->setServiceManager($sm);
return $addressFieldset;
}
),
),
\Zend\Form\Form の init():
$this->add(array(
'type' => 'MyFormway\Form\Fieldset\Address',
'name' => 'address',
));
これはエラーをスローします:
Zend\Form\FormElementManager::get was unable to fetch or create an instance for MyFormway\Form\Fieldset\Address
zend がこの Fieldset のインスタンスを取得できないのはなぜですか?
編集 - - - - - - - - - - - -
'form_elements' => array(
'factories' => array(
'MyFormway\Form\Fieldset\Address' => function($formElementManager) {
die('inna form_elements config');
$addressFieldset = new \MyFormway\Form\Fieldset\AddressFieldset();
$addressFieldset->setServiceManager($formElementManager->getServiceLocator());
return $addressFieldset;
}
),
),
私は Zend\Form\FormElementManager を持っているので、ServiceLocator をフェッチします...おそらく必要ありません。すべての XxxManager が Zend\ServiceManager\AbstractPluginManager を拡張し、これが ServiceManager を拡張するためです。FormElementManager と AbstractPluginManager にはメソッド getServiceManager() はありません。
しかし、私の問題: die() が呼び出されず、上記のエラーが発生します。バグですか?...私は大きな壁に立ち向かいます :(
編集 - - - - - - - - - - - -
フォームでは機能しますが、フィールドセットでは機能しません!!!