我在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();
答案 0 :(得分:1)
如果您希望表单进行POST,则需要将其设置为POST。添加:
$this->setAttribute('method', 'post');
到你的表单类构造函数,然后再试一次。