Zend framework 向salt注册的Zend表格

Zend framework 向salt注册的Zend表格,zend-framework,zend-form,Zend Framework,Zend Form,我有一个简单的注册表和使用md5加密和salt散列的密码,我得到一个错误,说“uni”字段不能为空,我假设这是因为我不确定如何将$salt添加到表单中(它是否是隐藏元素?像id字段一样?)。我已完成以下模型: public function addUser($first_name, $surname, $email, $username, $password, $salt, $age, $gender, $uni) { $salt=substr(md5(mt_rand()),0,20)

我有一个简单的注册表和使用md5加密和salt散列的密码,我得到一个错误,说“uni”字段不能为空,我假设这是因为我不确定如何将$salt添加到表单中(它是否是隐藏元素?像id字段一样?)。我已完成以下模型:

public function addUser($first_name, $surname, $email, $username, $password, $salt, $age, $gender, $uni) {

    $salt=substr(md5(mt_rand()),0,20);
    $md5Password=md5($salt.$password);

    $data = array(
        'first_name' => $first_name,
        'surname' => $surname,
        'email' => $email,
        'username' => $username,
        'salt' => $salt,
        'password' => $md5Password,
        'age' => $age,
        'gender' => $gender,
        'uni' => $uni,
    );
    $this->insert($data);
} 
以下是表格:

<?php

class Application_Form_Register extends Zend_Form
{


    public function init() {
        $this->setName('register');
        $id = new Zend_Form_Element_Hidden('id');
  $id->addFilter('Int');
        $first_name = new Zend_Form_Element_Text('first_name');
        $first_name->setLabel('Firstname:')
                ->setRequired(true)
                ->addFilter('StripTags')
                ->addFilter('StringTrim')
                ->addValidator('NotEmpty');
        $surname = new Zend_Form_Element_Text('surname');
        $surname->setLabel('Surname:')
                ->setRequired(true)
                ->addFilter('StripTags')
                ->addFilter('StringTrim')
                ->addValidator('NotEmpty');
    $email = new Zend_Form_Element_Text('email');
    $email->setLabel('Email:')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty');
    $username = new Zend_Form_Element_Text('username');
    $username->setLabel('Username:')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty');
    $password = new Zend_Form_Element_Password('password');
    $password->setLabel('Password:')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty');
    $salt = new Zend_Form_Element_Hidden('salt');
    $age = new Zend_Form_Element_Text('age');
    $age->setLabel('Age:')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty');
    $gender = new Zend_Form_Element_Text('gender');
    $gender->setLabel('Gender:')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty');
    $uni = new Zend_Form_Element_Text('uni');
    $uni->setLabel('University:')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty');
    $submit = new Zend_Form_Element_Submit('submit');
    $submit->setAttrib('id', 'submitbutton');
    $this->addElements(array($id, $first_name, $surname, $email, $username, $password, $salt, $age, $gender, $uni, $submit));
}
}

第一个“uni”是一个表单字段

$uni = new Zend_Form_Element_Text('uni');
    $uni->setLabel('University:')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty');
向声明为“not null”的db table列传递“null”值时,会发生此错误。要解决此问题,请向“addUser()”方法传递一个“notnull”值,在方法api中为“uni”设置一个默认值,或允许db表的“uni”列接受“null”值。

就我个人而言,我通常在方法上向这些类型传递一个数组,然后提取我想要的位。比如:

public function addStation(array $data) {
        $data = array(
            'station' => $data['station'],
            'comment' => $data['comment']
        );

        $this->insert($data);
    }
就我个人而言,我根本不会把盐场放在表格中,我会在模型中分配盐分。向全世界展示我的盐毫无意义


祝你好运。

是的,但是uni不应该为null,也不是null。我在字段中输入了数据。检查发布的数据,在某个地方你丢失了“uni”数据。您提供的代码没有明显的错误。可能在控制器中转储$form变量,并确保所有内容都在那里。对不起,这是我犯的一个愚蠢的错误,我在数据库中遗漏了一列,所以我在模型中插入了8,而总共有9列。。