在我的Zend \ Form \ Fieldset AddressFieldset中,它需要Zend \ Db \ TableGateway \ AbstractTableGateway BundeslandTable用于\ Zend \ Form \ Element \ Select()。zf2 ServiceManagerAwareInterface in Fieldset
因此,我在此AddressFieldset中实现\ Zend \ ServiceManager \ ServiceManagerAwareInterface,并使用init()而不是__construct()。
而且在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的\表格\表单的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无法抓取该字段集的实例?
编辑-----------------------
'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 \表格\ FormElementManager我取的ServiceLocator ..也许不需要,因为所有的XxxManager扩展了Zend \ ServiceManager \ AbstractPluginManager,并且这扩展了ServiceManager。 在FormElementManager中,在AbstractPluginManager中也没有方法getServiceManager()。
但我的问题:die()没有被调用加上面的错误。这是一个错误吗? ......我站了大墙:(
编辑-----------------------
它适用于形式,但不对于一个字段!
谢谢。 MyFormway \ Form \ Fieldset \ AddressFieldset()的构造函数永远不会被调用。而且从来没有在'form_elements' - '工厂' - 'MyFormway \ Form \ Fieldset \ Address'中的module.config.php中的函数。 – allapow