在ZF2中,我用自己的Text元素覆盖了它(称为My\Form\Element\Text
)。现在,我想添加它,以便在向表单添加文本元素时,它默认为我覆盖的类,而不是Zend\Form\Element\Text
:
$this->add([
'type' => 'text',
'name' => 'to',
]);
我知道我可以使用'type' => 'My\Form\Element\Text'
而不是just 'type' => 'text'
,但是我试图找出是否可以避免这种情况,并且默认情况下只使用custom元素。
我已经尝试了这两种技术:
module.config.php
return [
'form_elements' => [
'invokables' => [
'text' => 'My\Form\Element\Text',
],
],
];
Module.php
class Module {
public function getFormElementConfig() {
return [
'invokables' => [
'text' => 'My\Form\Element\Text',
],
];
}
}
这些都不起作用(仍获得的实例Zend\Form\Element\Text
)。还有其他注册元素的Zend\Form\Factory::create()
方法,以便该方法创建我的自定义元素的实例而不是Zend版本吗?
尽管您的配置正确,但是使用自定义元素时需要注意一些注意事项,在此处的文档中有详细介绍
赶上1
如果要通过扩展Zend \ Form \ Form创建表单类,则不得在__construct-or中添加自定义元素,而应在init()方法中添加该自定义元素
赶上2
您不能直接实例化表单类,而应通过Zend \ Form \ FormElementManager获取其实例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句