2010-06-04 119 views
0

我有一個簡單的內容編輯表單(Zend_Form),我用從Zend_Db_Table_Row_Abstract-> toArray()方法生成的數組填充()。它工作得很好。如何填充()整個Zend_Form減去一個表單元素?

目標是要而不是用值填充表單元素之一。

我目前正在通過從填充數組中刪除特定鍵=>值對來解決此問題。我很好奇,如果在生成表單元素本身時有辦法做到這一點。

說...

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

有什麼想法?

回答

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;  
    } 
} 
實現這一目標容易
相關問題