【问题标题】:Codeigniter - edit form (repopulating) with edit_uniqueCodeigniter - 使用 edit_unique 编辑表单(重新填充)
【发布时间】:2013-04-10 14:27:03
【问题描述】:
【问题讨论】:
标签:
php
codeigniter
validation
codeigniter-form-helper
【解决方案1】:
好的,我自己找到了。在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;
}
}
【解决方案2】:
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 是它的值。