如何用ZF2中的自定义元素替换表单元素?

时间:2016-04-30 17:48:17

标签: zend-framework2 zend-form zend-form-element service-locator zend-form2

我正在努力解决MultipleCheckbox,尤其是问题,如果没有选中列表的复选框,则表单验证失败。 (详见here。)

要解决此问题,我想将Zend\Form\Element\Checkbox替换为我覆盖getInputSpecification()方法的自定义问题:

Checkbox.php

namespace My\Form\Element;
use Zend\Form\Element\Checkbox as ZendCheckbox;
class Checkbox extends ZendCheckbox
{
    public function getInputSpecification()
    {
        $spec = parent::getInputSpecification();
        $spec['required'] = false;
        return $spec;
    }
}

module.config.php

return [
    'form_elements' => [
        'invokables' => [
            'Zend\Form\Element\Checkbox' => 'My\Form\Element\Checkbox',
        ],
    ]
];

但我的自定义Checkbox类并没有取代Zend的on。它没有被完全忽略 - 我在Xdebug中看到它在某些情况下使用 (例如,对于RadioButton元素和某些单个Checkbox元素)。但在其他一些情况下(特别是我的MultiCheckbox的复选框)没有。

我做错了什么?如何替换整个应用程序的Zend\Form\Element

0 个答案:

没有答案