代码之家  ›  专栏  ›  技术社区  ›  allnightgrocery

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

  •  0
  • allnightgrocery  · 技术社区  · 14 年前

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

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

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

    说…

    $foo = new Zend_Form_Element_Textarea('foo');
    $foo->ignoreDefaultValue(true);
    $form->addElement($foo);
    

    有什么想法吗?

    1 回复  |  直到 14 年前
        1
  •  0
  •   SMka    14 年前

    不。 当你这样做的时候 $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;    
        }
    }