将“假”字段添加到grocerycrud添加/编辑表单

时间:2012-12-09 22:45:38

标签: codeigniter grocery-crud

在我的用户表上,我有一个128 char'hashed_pa​​ssword'字段。在我的User_model中,我有加密和解密密码的功能。加密时,我随机生成一个盐,它存储在hashed_pa​​ssword字段的前64个字符中。散列的pw结果存储在最后64个字符中。在解密时我会反过来。

正如我猜的那样几乎是通用的,从来没有明文密码可以显示。

因此,当我的用户(通过grocery_CRUD)添加/编辑用户时,我认为可以将字段:“password”和“passconf”包含在add& amp;使用以下内容编辑表单:

$crud->fields('username', ... <other fields> ... 'password', 'passconf');

为了清楚 - 我的用户表上不存在“password”和“passconf”字段。我只是希望我的用户在那里输入新密码,然后以我自己的方式处理它。

但它不起作用。我的意思是添加/编辑表单正确呈现两个假字段(下面的验证工作正常)但如果我尝试更新任何其他用户信息然后'更改更改',该操作将失败,“正在加载”图形短暂旋转但不更新数据库。

我尝试在非常简单的grocery_CRUD表单上复制它,没有其他复杂性并获得相同的行为:表单呈现正确但不会更新数据库。

是否可以使用字段?我错过了什么吗?

grocery_CRUD是否试图在导致数据库更新失败的幕后对这些字段做些什么?

我当时希望做到以下几点:

$crud->set_rules('password', 'Password', 'callback_valid_password');
$crud->set_rules('passconf', 'Password Confirmation', 'matches[password]');

$crud->callback_before_insert(array($this,'encrypt_password_callback'));
$crud->callback_before_update(array($this,'encrypt_password_callback'));

function encrypt_password_callback($post_array, $primary_key = null){
    if ($post_array['password'] <> '') {
        $this->User_model->set_password($post_array['username'], $post_array['password']);
    }
}

function valid_password($str) {
    //do some pw validation
    return TRUE;
}

1 个答案:

答案 0 :(得分:2)

我使用插入和更新回调解决了这个问题,然后加密密码然后取消设置违规的'密码'和&amp;插入或更新db调用之前的'passconf'字段。