【问题标题】:Zend Framework POST data is not displayed or processedZend Framework POST 数据未显示或处理
【发布时间】:2013-08-02 04:56:36
【问题描述】:

这是我的表格:个人资料表格

它有两个元素password和passwordConf

    $this->password= new Zend_Form_Element_Password("password",array("label"=>"Password","required"=>true));
    $this->passwordConf= new Zend_Form_Element_Password("confpassword",array("label"=>"Retype","required"=>true));
    $this->passwordConf->addValidator("Identical",array("token"=>"password"));
    $this->save=new Zend_Form_Element_Submit("save",array("label"=>"Change Password","class"=>"btn btn-primary"));

所以我在控制器中有一个 this 的实例并将其传递 POST 数据

    $profileForm= new Application_Form_Profile();

    if($_POST)
    if($profileForm->isValid($_POST))
    {

        $membersTable= new Application_Model_DbTable_Members();
        $member=$membersTable->find($this->user->id)->current();
        $member->password=sha1($profileForm->getValue("password").$member->salt);
        $this->_helper->flashMessenger(array("type"=>"success","content"=>"Password Changed!"));
        $this->_redirect("");

        $member->save();
    }

    $this->view->profileForm=$profileForm;
}

但由于某种原因,我收到 Zend Empty 错误消息。我还注意到没有填充表单字段。 我检查了 Chrome 中的响应,看起来帖子数据很好地传递到了页面。甚至做了一个 print_r(POST) ,甚至所有数据看起来都很好。我在上面的代码块之前和之后都这样做了,但是没有用。尽管传递了数据,但它只是不会填充表单。

PS:错误信息仅针对密码确认字段。密码字段工作正常

【问题讨论】:

  • Zend_Form_Element_Password 默认设置为不重新显示与安全相关的值。
  • 没关系,但密码 conf 验证失败,即使我输入数据
  • 哇,想通了。显然,变量 $this->passwordConf 的名称和字段的名称必须匹配
  • 你真的应该在你的表单类中使用addElement(),例如$this->addElement(new Zend_Form_Element_...)
  • 我已经习惯了这种语法。它更快,让我们直接使用 $form->elementname 而不是 $form->getElement("name") 访问表单元素

标签: php zend-framework


【解决方案1】:

这里的问题是类变量的名称和元素的名称必须匹配

$this->passwordConf= new Zend_Form_Element_Password("confpassword",array("label"=>"Retype","required"=>true));

$this->passwordConfconfpassword 不应不同,否则会发生此错误

【讨论】:

    猜你喜欢
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    相关资源
    最近更新 更多