2

似乎这里描述的edit_unique函数- Validating Uniqueness In CodeIgniter When Updating A Record杀死了该set_value函数。

一切正常,就像这样......

echo form_input('username', set_value('username',$user->username));

但是在使用edit_unique验证时,提交表单后该值为空。后变量没问题,验证也没有错误 - 但未设置值。

知道我该如何解决吗?

4

2 回答 2

8

好的 - 我自己找到了。在bee为真的情况下没有返回值。也许任何人都面临同样的问题......使用此功能,它可以工作:

function edit_unique($value, $params)  {
    $CI =& get_instance();
    $CI->load->database();

    $CI->form_validation->set_message('edit_unique', "Sorry, that %s is already being used.");

    list($table, $field, $current_id) = explode(".", $params);

    $query = $CI->db->select()->from($table)->where($field, $value)->limit(1)->get();

    if ($query->row() && $query->row()->id != $current_id)
    {
        return FALSE;
    } else {
        return TRUE;
    }
}
于 2013-04-10T15:25:11.527 回答
0

Petra 的回答效果很好,如果由于某种原因它对您不起作用,请检查您的主键是否为“id”,如果不是,您需要进行一些更改。

改变

list($table, $field, $current_id) = explode(".", $params);

if ($query->row() && $query->row()->id != $current_id)

list($table, $field, $current_id, $key) = explode(".", $params);

if ($query->row() && $query->row()->$key != $current_id)

然后添加如下规则:

$this->form_validation->set_rules(
    'form_field', 
    'Form Label', 
    'required|trim|edit_unique[table.column.' . $edit . '.unique]'
);

unique您的唯一/主键在哪里 ,$edit它的价值在哪里。

于 2021-02-05T07:08:03.903 回答