ZF2表单:在控制器操作请求中,即使它应该也不会POST

时间:2014-04-20 11:34:39

标签: login zend-framework2 admin zend-form http-post

我在ZF2中遇到了表单问题。这是我尝试设置的临时管理员会话的登录,并且在提交表单后,似乎请求永远不会在POST方法中。我试着添加

$this->setMethod('post');

但它也不起作用。如何才能获得$ request-> isPost()为真?

我在Controller中的loginAction:

public function loginAction()   {
         $form  = new AdminForm();
         $form->get('submit')->setValue('Login');

         $request = $this->getRequest();
         if ($request->isPost()) {
             $form->setData($request->getPost());
             if ($form->isValid()) {
                if (md5($form->get('password')->getValue())==foo)   {
                    $_SESSION['foo']='foo';
                }
                return $this->redirect()->toRoute('admin');
             }
         }

         return array(
             'form' => $form,
         );
     }

我的表格:

<?php

namespace Admin\Form;

 use Zend\Form\Form;

 class AdminForm extends Form
 {
     public function __construct()
     {
         parent::__construct('admin');
         $this->add(array(
             'name' => 'password',
             'type' => 'password',
            'options' => array(
                'label' => 'Password',
            ),
         ));


         $this->add(array(
             'name' => 'submit',
             'type' => 'Submit',
             'attributes' => array(
                 'value' => 'Go',
                 'id' => 'submitbutton',
             ),
         ));
     }
 }

我的登录页面:

<?php

 $title = 'Login';
 $this->headTitle($title);
 ?>
 <h1><?php echo $this->escapeHtml($title); ?></h1>
 <?php

 $form->setAttribute('action', $this->url('admin', array('action' => 'login')));
 $form->prepare();

 echo $this->form()->openTag($form);
 echo $this->formCollection($form);
 echo $this->form()->closeTag();

1 个答案:

答案 0 :(得分:1)

如果您希望表单进行POST,则需要将其设置为POST。添加:

$this->setAttribute('method', 'post');

到你的表单类构造函数,然后再试一次。