我有一个简单的内容编辑表单(Zend_Form),我使用Zend_Db_Table_Row_Abstract-> toArray()方法生成的数组填充()。它运作得很好。
目标是不使用值填充其中一个表单元素。
我目前正在通过删除特定密钥来解决此问题=>填充数组中的值对。我很好奇在生成表单元素本身时是否有办法做到这一点。
说...
$foo = new Zend_Form_Element_Textarea('foo');
$foo->ignoreDefaultValue(true);
$form->addElement($foo);
有什么想法吗?
答案 0 :(得分:0)
不。
当您执行$form->validate($data)
或$form->populate($data)
时 - 内部这很简单
foreach($formElements as $element) {
$element->setDefault($newValue);
}
没有像$form->_populationInProgress = true
通过扩展Zend_Form
class App_Form extends Zend_Form
{
protected $_ignoreDefaults = array();
public function addIgnoredDefaultsElement(Zend_Form_Element $el)
{
$this->_ignoreDefaults[$el->getName()] = true;
}
public function isInIgnoregDefaults($name)
{
return (bool)array_key_exists($name, $this->_ignoreDefaults);
}
public function setDefault($name, $value)
{
if (!$this->isInIgnoregDefaults($name)) {
parent::setDefault($name, $value);
}
return $this;
}
}