Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何填充()整个Zend_表单减去一个表单元素?_Php_Zend Framework_Zend Form - Fatal编程技术网

Php 如何填充()整个Zend_表单减去一个表单元素?

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); $

我有一个简单的内容编辑表单(Zend_form),我用从Zend_Db_Table_Row_Abstract->toArray()方法生成的数组填充()。它工作得很好

目标是使用值填充其中一个表单元素

我目前正在通过从填充数组中删除特定的key=>value对来解决这个问题。我很好奇,在生成表单元素本身时,是否有办法做到这一点

$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;    
    }
}