NotEmpty验证器不适用于自定义表单元素

时间:2014-11-27 19:44:41

标签: php forms zend-framework

我为电话号码创建了自定义表单元素。它由国际前缀的选择和实际电话号码的文本组成。

class Mylib_Form_Element_Phone extends Zend_Form_Element_Xhtml
{
    public $helper = 'formPhone';
    protected $prefix;
    protected $phone;

    public function setValue($value)
    {
        if (is_null($value)) {
            return;
        }

        if (!is_array($value) || !isset($value['prefix']) || !isset($value['phone'])) {
            throw new Exception('Invalid phone value provided');
        }
        $this->prefix = $value['prefix'];
        $this->phone = $value['phone'];
    }

    public function getValue()
    {
        return array(
            'prefix' => $this->prefix,
            'phone' => $this->phone
        );
    }

    public function isValid($value, $context = null)
    {
        $valid = parent::isValid($value, $context);

        if ($valid && !empty($this->phone) && empty($this->prefix)) {
            $this->addError('PHONE_PREFIX_REQUIRED');
            return false;
        }

        return $valid;
    }
}

我的自定义验证错误正常但如果使用'required' => true创建元素并且我将两个字段都清空,则不会触发错误。

如何使NotEmpty验证器与自定义数组元素一起使用?

0 个答案:

没有答案