2012-07-13 40 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(); ?> 

这种尝试一次。

我认为它会工作。