Zend framework Zend form getValue returning";0“;一半的田地

Zend framework Zend form getValue returning";0“;一半的田地,zend-framework,Zend Framework,我正在尝试构建一个html表单(需要有足够的标记,让zend使用decorators生成表单是不可行的),我正在输入值元素中使用$this->signupForm->getValue('fieldName') form类通常创建元素并添加到表单中,当我显示此表单时,字段工作正常 但是,使用getValue方法,我的表单字段值的一半是“0”。我做了类型检查以确保它们不为null,但getValue实际上返回了一个字符串“0” 没有设置默认值。唯一相关的是,所有默认值为“0”的字段都是在扩展父类的子

我正在尝试构建一个html表单(需要有足够的标记,让zend使用decorators生成表单是不可行的),我正在输入值元素中使用
$this->signupForm->getValue('fieldName')

form类通常创建元素并添加到表单中,当我显示此表单时,字段工作正常

但是,使用getValue方法,我的表单字段值的一半是“0”。我做了类型检查以确保它们不为null,但getValue实际上返回了一个字符串“0”

没有设置默认值。唯一相关的是,所有默认值为“0”的字段都是在扩展父类的子类中定义的。但是,将字段移动到父类似乎没有影响(缓存已清除等)

这让您了解表单类的结构:

class Form_Signup extends Base_Form_Signup {

    public function __construct($options = null) {

        parent::__construct($options);

        $address = $this->createElement('checkbox', 'address');
        $address->setLabel('Address')->setRequired(true);

        // Add our elements
        $this->addElement($address);

    }
}

class Base_Form_Signup extends Zend_Form {

    public function __construct($options = null) {

        parent::__construct($options);

        // fields defined here do not show 0

        // Add our elements
        $this->addElement( // adding our elements );

    }
}

我认为您遇到了问题,因为构造函数以Zend_形式工作。我认为在每个类的构造函数中调用默认的decorator会导致某些内容被覆盖/取消

尝试使用
init()
方法,因为该类旨在使用:

class Form_Signup extends Base_Form_Signup {

    public function init() {

        parent:: init();//may be needed, may not

        $address = $this->createElement('checkbox', 'address');
        $address->setLabel('Address')->setRequired(true);

        // Add our elements
        $this->addElement($address);

    }
}

class Base_Form_Signup extends Zend_Form {

    public function init() {

        // Add our elements
        $this->addElement( // adding our elements );

    }
}

如果确实需要,您仍然可以将
$options
数组传递给构造函数,但最好只使用
setOptions()

我将我的代码改成了这个解决方案,总体上看起来确实更好-但是我的问题是,我完全忽略了这样一个事实,即当它们应该是文本时,我将它们都设置为复选框字段。我猜这是一个糟糕的复制/粘贴+周五晚些时候,我没有抓住这么简单的东西。谢谢