【问题标题】:crud codeigniter default valuecrud codeigniter 默认值
【发布时间】:2013-02-19 15:58:03
【问题描述】:

大家好,我有一个使用 crud 在 codeigniter 中开发的网站。 在我的插入视图中,我有一个选择,我想在其中输入一个默认值,我已经完成了他的模式(文件的名称是 id_company)

$crud = new grocery_CRUD();
$state_crud = $crud->getState();
$crud->set_relation('id_company','company','name_company');
$crud->set_relation('id_plant','plant','name_plant');
$crud->set_relation('id_order','order','name_order');
$crud->field_type('id_plant','dropdown', array('0' => '') );
$crud->unset_print();
$crud->unset_export();
$crud->unset_delete();
$data['name_company'] = $company[0]['name_company'];
$data['id_company'] = $company[0]['id'];

$crud->callback_edit_field('id_company',array($this,'edit_field_callback_id_company_add'));

回调是:

function edit_field_callback_id_company_add($value, $primary_key){
    $company = $this->Company_model->getCompany($value);
    return '<div id="field-id_company" class="readonly_label">'.$company->name_company.'</div>';
}

我的模型函数

function getCompany($id_company, $select = ''){
        if( isset($id_company) && $id_company > 0 ) : 
            $this->CI =& get_instance();
            if( $select ) $this->CI->db->select($select);
            $this->CI->db->where('id', $id_company);
            $query = $this->CI->db->get_where($this->company_table);
            return $query->result_array();
        endif;
        return FALSE;
    }

我已经看到 crud 插入了一个名为 field-id_company_czhn 的选择,我尝试插入它但没有。 问题出在哪里?

【问题讨论】:

    标签: php codeigniter crud grocery-crud


    【解决方案1】:

    更新:如果您尝试添加 if 语句,它应该可以工作。所以在你的情况下,这可能对你有用:

    $crud = new grocery_CRUD();
    $state_crud = $crud->getState();
    
    if ($state_crud == 'edit' || $state_crud == 'update') {
        $crud->callback_edit_field('id_company',array($this,'edit_field_callback_id_company_add'));
    } else {
        $crud->set_relation('id_company','company','name_company');
    }
    
    ...
    

    您使用回调的逻辑是错误的。所以在你的情况下,你需要这样的东西:

     $crud->callback_edit_field('id_company',
                         array($this,'edit_field_callback_id_company_add'));
    

    然后:

     function edit_field_callback_id_company_add($value, $primary_key){
    
        $this->db->where('id',$value); //Where id is the primary key for company table
        $company = $this->db->get('company')->row();
    
        return '<div id="field-id_company" class="readonly_label">'.$company->name_company.'</div>';
     }
    

    文档中有一篇文章解释了如何使用回调:http://www.grocerycrud.com/documentation/tutorial_using_callbacks

    如果您愿意,也可以使用 field_type 方法 (http://www.grocerycrud.com/documentation/options_functions/field_type) 和 field_type = readonly

    至于默认值功能,github 上有一个问题:https://github.com/scoumbourdis/grocery-crud/issues/138

    【讨论】:

    • 感谢您的帮助,但我的选择始终相同,选择的元素不是 id_company
    • 那么你只需要在你的 fields 方法中添加 id_company 即可。例如 $crud->fields('field1','field2','id_company'); .这应该适合你;-)
    • 呃抱歉,但这个字符串没有放在回调中,而是在调用之后,例如,在这种情况下,我的视图中有很多字段(“notes,id_order ...)但只有字段id_company 必须有一个默认值
    • 能否请您使用您使用的完整功能更新您的问题,以便我更好地理解?谢谢。
    • 我已经更新了我的问题,我删掉了大部分,因为很长,但我认为这是主要部分
    【解决方案2】:

    【讨论】:

    • 请不要只用链接回答问题;如果链接失效,您的答案将变得毫无用处。链接很棒,但答案应该独立。
    • 好的,我明白你的想法了。但是,我测试。举报成功。这是 Grocery crud 的快乐代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 2021-04-07
    • 1970-01-01
    • 2011-04-21
    • 2018-10-08
    • 2016-01-18
    相关资源
    最近更新 更多