php - post 方法不适用于 zend 框架中的表单装饰器

标签 php mysql zend-framework

如果我取消注释下面的行,那么我将无法在 $this->_request->getPost('Login') 中获取值

//$this->setDecorators(array(array('viewScript', array('viewScript' => 'admin/login_decorator.phtml'))));

$this->_request->getPost 适用于表单,但不适用于表单装饰器。

下面是文件...

表格/loinForm.php

<?php

class Application_Form_LoginForm extends Zend_Form {

    public function __construct($options = null) {
        parent::__construct($options);
        $this->setMethod('post');
        $name = new Zend_Form_Element_Text('username');
        $name->removeDecorator('Label')
                ->removeDecorator("HtmlTag")
                ->addErrorMessage("Please Enter username")
                ->setRequired(true);
        $password = new Zend_Form_Element_Password('password');
        $password->removeDecorator('Label')
                ->removeDecorator("HtmlTag")
                ->addErrorMessage("Please Enter password")
                ->setRequired(true);
        $submit = new Zend_Form_Element_Submit('Login');
        $submit->removeDecorator('Label')
                ->removeDecorator("HtmlTag");

        $this->addElements(array($name, $password, $submit));
        //$this->setDecorators(array(array('viewScript', array('viewScript' => 'admin/login_decorator.phtml'))));
    }

}

views/scripts/admin/login_decorator.phtml

<link href="<?php echo $this->baseUrl(); ?>/css/login.css" media="screen" rel="stylesheet" type="text/css">
<section class="container">
    <div class="login">
      <h1>Login to Administrator</h1>
      <form action="" method="post" enctype="application/x-www-form-urlencoded">
        <p><input type="text" name="username" value="" placeholder="Username"></p>
        <p><input type="password" name="password" value="" placeholder="Password"></p>   
        <p class="submit"><input type="submit" name="commit" value="Login"></p>
      </form>
    </div>

    <div class="login-help">
      <p>Forgot your password? <a href="#">Click here to reset it</a>.</p>
    </div>
  </section>

登录.phtml

<?php echo $this->form; ?>

adminController.php loginAction()

public function loginAction() {
        $mysession = new Zend_Session_Namespace('Admin');
        if (isset($mysession->adminName)) {
            $this->_redirect('/admin');
        }
        $form = new Application_Form_loginForm();
        $this->view->form = $form;
        //Preform Admin login action        

        if ($this->_request->getPost('Login')) {
            $formData = $this->_request->getPost();
            if ($form->isValid($formData)) { //If form data is valid
                $name = $this->_request->getPost('username');
                $password = $this->_request->getPost('password');
                /*                 * **Creating object of model adminlogin class**** */
                $adminLoginObj = new Application_Model_Adminlogin();
                $fetchResult = $adminLoginObj->checkAdminAuthority($name, $password);
                if (count($fetchResult) > 0) {
                    $mysession->adminName = $name;
                    $this->_redirect('/admin/');
                } else {
                    $mysession->failLogin = "Invalid Username or Password!";
                    $this->_redirect('/admin/login');
                }
            }
        }
    }

我无法找出这个问题的原因。 请帮我解决这个问题。提前致谢。

最佳答案

请检查 在你的 Controller 中 如果 ($this->_request->getPost('Login')) { ...}

在 views/scripts/admin/login_decorator.phtml 中

<input type="submit" name="commit" value="Login">

字段名称与操作不匹配。

请相应检查。希望对您有所帮助。

关于php - post 方法不适用于 zend 框架中的表单装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20965248/

相关文章:

php - XML - 转义字符串的正确方法

mysql - 如何从另一台PC在线连接到MySQL数据库?网络

php安装错误

php - 是否有相当于 mysqli 语法 $stmt->bind_param() 的 PDO?

mysql - 如何在mysql查询中显示 "repost"之类的转发?

php - 如果表不存在则创建表,否则修改表

php - Zend 框架中的 register_shutdown_function

zend-framework - Zend Framework - 表单描述 - 禁用转义?

php - Zend 框架 : set Module as Subdomain

php - 如何使用触发器在SQL中递增?