2012-07-13 21 views
0

我有一個簡單的表格,有一個textarea答一個隱藏字段如何在zend框架中隱藏字段值不被請求顯示?

$textarea = new Zend_Form_Element_Textarea('post'); 
    $textarea->setRequired(true); 
    $textarea->setLabel(''); 

    $hidden = new Zend_Form_Element_Hidden('post_id'); 
    $hidden->setLabel(''); 
    $hidden->setValue('1');  

    $submit = new Zend_Form_Element_Submit('submit'); 
    $submit->setLabel('test'); 

    $this->addElement($textarea); 
    $this->addElement($hidden); 
    $this->addElement($submit); 

    $this->setDecorators(array(
     'FormElements', 
     array('HtmlTag', array('tag' => 'div', 'class' => 'form_class')), 
     'Form' 
    )); 

在我看來,我做

<?php echo $this->form->getElement('post')->render(); ?> 
<?php echo $this->form->getElement('submit')->render(); ?> 

然後在我的控制器

$request = $this->getRequest(); 
    if($request->isPost() && $form->isValid($request->getParams())) 
    { 
     Zend_Debug::dump($request->getParams()); 
    } 

發生的事情是我得到

array(8) { 
    ["module"] => string(6) "testr" 
    ["controller"] => string(8) "posts" 
    ["action"] => string(9) "post" 
    ["post"] => string(10) "testgfdgfg" 
    ["submit"] => string(26) "submit" 
} 

但沒有post_id

這有點有線,我不能弄明白。我找到了任何可能導致這個問題的代碼,但沒有任何代碼。我也試着呼應在視圖中隱藏字段,但我仍然得到請求

什麼想法沒有?

感謝

回答

3

您認爲做

<?php echo $this->form->getElement('post'); ?> 
<?php echo $this->form->getElement('post_id'); ?> 
<?php echo $this->form->getElement('submit');?> 

你像你這樣用後,並提交根本不附和POST_ID元素。你也不需要在所有Zend_Form_Element_XXX中調用render(),因爲php magic函數__toString()代理render()。

1

在查看部分你是剛剛設置兩個元素只有

<?php echo $this->form->getElement('post')->render(); ?> 
<?php echo $this->form->getElement('submit')->render(); ?> 

WHERE形式 - > getElement( 'POST_ID') - >渲染(); ?>

<?php echo $this->form->getElement('post')->render(); ?> 
<?php echo $this->form->getElement('submit')->render(); ?> 
<?php echo $this->form->getElement('post_id')->render(); ?> 

這種嘗試一次。

我認爲它會工作。