0

我有一个简单的表单,它有一个 textarea 和一个隐藏字段

    $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

这有点连线,我无法弄清楚。我已经寻找任何可能搞砸的代码,但没有。我也尝试在视图中回显隐藏字段,但我仍然没有收到任何请求

有任何想法吗?

谢谢

4

2 回答 2

3

在你看来做

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

您根本没有像 post 和 submit 那样回显 post_id 元素。你也不需要调用 render() 因为所有 Zend_Form_Element_XXX 中的 php 魔术函数 __toString() 代理 render() 。

于 2012-07-13T04:05:07.100 回答
1

在 View 部分你只设置了两个元素

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

WHERE form->getElement('post_id')->render(); ?>

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

尝试一次。

我认为它会起作用。

于 2012-07-13T06:19:53.393 回答