2011-04-18 50 views
5

我創建了一個隱藏的元素這樣,當隱藏的元素沒有價值,甚至這個:Zend框架指定它

$this->addElement('hidden', 'id', array(
    'value' => 1 
)); 

但它沒有更好的工作。

怎麼了?

+0

你的第二個例子應該工作,因爲我沒有看到任何問題。 – Marcin 2011-04-18 10:57:40

+0

但是。沒有成功。 – 2011-04-18 11:22:53

+0

所以原因不是這個代碼。您必須在代碼中的某處導致問題。沒有更多的信息,很難說出了什麼問題。 – Marcin 2011-04-18 11:51:25

回答

5

你可能在使用

$form->populate($someData); 

$form->isValid($someData); 

某處在您的代碼;)

+0

謝謝。我開始環顧其他方法,確實存在這樣的問題。 – 2011-04-19 06:32:53

+1

是的。 isValid傾向於清除表單,並且自定義填充方法可以將默認設置相當不錯。 – axiom82 2014-02-07 01:38:24

0

也許在呈現之前,你做$form->setValue()和參數ID爲空。

+0

我沒有$ form-> setValue()。 我檢查過,該方法甚至不存在。 – 2011-04-18 11:13:16

+0

@ndefontenay那麼你的第二個例子是正確的。沒有代碼很難說什麼。 – Iscander 2011-04-18 11:31:10

0

它有一個int或字符串對我的作品(ZF 1.1),但你試圖傳遞值作爲字符串?:

$this->addElement('hidden', 'id', array('value'=>'1'))

1

您可以使用Zend_Form的setValue方法。

試試這樣說:

$this->getElement('your-name')->setValue(1); 
+0

@softwareplay setVlue()會退出,請參閱文檔:http://framework.zend.com/manual/1.12/en /zend.form.forms.html – 2014-01-18 21:32:42

-1

你試過setDefault?

$this->addElement('hidden', 'id', array(
    'default' => 1 
)); 
1

我認爲你必須把你的窗體類:

public function populate(array $values) { 
    parent::populate($values); 
    $this->addElement('hidden', 'hidden'); 
    $el = $this->getElement('hidden'); 
    $el->setValue(1); 

} 
0

答案很簡單:

//$form <- is your zend form element; 
$form->get('element_name')->setValue(1); 

爲我工作! :)

正如之前說的那樣:確保你的方式沒有表單元素設置器(填充,setValues等)。 :)

0

這個我曾經(在窗體類)問題

$form->hiddenElement->getAttrib('xxx'); 

$hidden = $this->createElement('hidden','hiddenElement'); 
$hidden->setAttrib('xxx','my value'); 
$this->addElement($hidden); 

提取值後migth不是一個最佳的解決方案,但它workked我。