Php 如何填充()整个Zend_表单减去一个表单元素?
我有一个简单的内容编辑表单(Zend_form),我用从Zend_Db_Table_Row_Abstract->toArray()方法生成的数组填充()。它工作得很好 目标是不使用值填充其中一个表单元素 我目前正在通过从填充数组中删除特定的key=>value对来解决这个问题。我很好奇,在生成表单元素本身时,是否有办法做到这一点 说Php 如何填充()整个Zend_表单减去一个表单元素?,php,zend-framework,zend-form,Php,Zend Framework,Zend Form,我有一个简单的内容编辑表单(Zend_form),我用从Zend_Db_Table_Row_Abstract->toArray()方法生成的数组填充()。它工作得很好 目标是不使用值填充其中一个表单元素 我目前正在通过从填充数组中删除特定的key=>value对来解决这个问题。我很好奇,在生成表单元素本身时,是否有办法做到这一点 说 $foo = new Zend_Form_Element_Textarea('foo'); $foo->ignoreDefaultValue(true); $
$foo = new Zend_Form_Element_Textarea('foo');
$foo->ignoreDefaultValue(true);
$form->addElement($foo);
有什么想法吗?没有。
当您执行$form->validate($data)
或$form->populate($data)
-在内部这很简单
foreach($formElements as $element) {
$element->setDefault($newValue);
}
没有特殊的内部标志,如$form->\u populationInProgress=true
通过扩展Zend\u表单
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;
}
}