【问题标题】:Codeigniter - edit form (repopulating) with edit_uniqueCodeigniter - 使用 edit_unique 编辑表单(重新填充)
【发布时间】:2013-04-10 14:27:03
【问题描述】:

似乎edit_unique 函数(描述为here - Validating Uniqueness In CodeIgniter When Updating A Record)杀死了set_value 函数。

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

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

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

知道如何解决这个问题吗?

【问题讨论】:

    标签: 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 是它的值。

    【讨论】:

      猜你喜欢
      • 2011-02-13
      • 1970-01-01
      • 2019-12-10
      • 2010-11-10
      • 2011-12-27
      • 1970-01-01
      • 2013-06-24
      • 2018-12-12
      • 1970-01-01
      相关资源
      最近更新 更多