我有兩個非常相似的Fieldset
s MyFooFieldset
和MyBarFieldset
。爲了避免重複代碼,我創建了一個AbstractMyFieldset
,感動了整個代碼出現,並希望在具體的類的init()
的方法來處理差異:如何在Zend Framework 2中的Fieldset子類中設置元素的類型?
AbstractMyFooFieldset
namespace My\Form\Fieldset;
use Zend\Form\Fieldset;
use Zend\InputFilter\InputFilterProviderInterface;
abstract class AbstractMyFieldset extends Fieldset implements InputFilterProviderInterface
{
public function init()
{
$this->add(
[
'type' => 'multi_checkbox',
'name' => 'my_field',
'options' => [
'label_attributes' => [
'class' => '...'
],
'value_options' => $this->getValueOptions()
]
]);
}
public function getInputFilterSpecification()
{
return [...];
}
protected function getValueOptions()
{
...
return $valueOptions;
}
}
MyFooServerFieldset
namespace My\Form\Fieldset;
use Zend\Form\Fieldset;
class MyFooServerFieldset extends AbstractMyFieldset
{
public function init()
{
parent::init();
$this->get('my_field')->setType('radio'); // There is not method Element#setType(...)! How to do this?
$this->get('my_field')->setAttribute('required', 'required'); // But this works.
}
}
我想設置type
和該元件的一些其他配置,例如type
和required
屬性。設置屬性似乎沒問題,至少我可以設置required
屬性。但我不能設置類型 - Element#setType(...)
不在那裏。
如何設置type
的Zend\Form\Element
,之後是add
ed?