Zend framework Zend form getValue returning";0“;一半的田地
我正在尝试构建一个html表单(需要有足够的标记,让zend使用decorators生成表单是不可行的),我正在输入值元素中使用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”的字段都是在扩展父类的子
$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()
我将我的代码改成了这个解决方案,总体上看起来确实更好-但是我的问题是,我完全忽略了这样一个事实,即当它们应该是文本时,我将它们都设置为复选框字段。我猜这是一个糟糕的复制/粘贴+周五晚些时候,我没有抓住这么简单的东西。谢谢