0

テキストエリアと非表示フィールドを持つ単純なフォームがあります

    $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要素をエコーし​​ていません。また、すべてのZend_Form_Element_XXXでphpマジック関数__toString()プロキシrender()があるため、render()を呼び出す必要はありません。

于 2012-07-13T04:05:07.100 に答える
1

ビュー部分では、2つの要素のみが設定されています

<?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 に答える