将模型名称作为函数中的参数传递,并使用其方法,如“$ this-> $ model_name-> method()”codeigniter

时间:2013-07-18 18:14:37

标签: php codeigniter code-injection

如何创建一个方法来填充具有特定模型的下拉读取特定表,然后获取该表的特定列以填充下拉列表?

例如,如果我有一个模范人物 我有

function get_all_id($id,$table) {
    $this->db->from($table);
    $this->db->order_by($id, "asc");
    $q = $this->db->get();
    return $q;
}

然后如果我需要填写让我们说一个带有姓氏字段的下拉菜单......我会用它作为

$this->load->model('person_model');
$row = $this->person_model->get_all_id('id_person','tbl_person');
foreach ($row->result() as $val) 
$result .= "<option value='". $val->last_name."'>".$val->last_name."</option> \n" ;

然后我就在视图中回应。

如何处理接收型号名称 table_name 以及我需要的特定字段作为参数的功能? 像

function fill_dropdown($model_name, $id, $table_name, $field){
    $this->load->model($model_name);
    $row = $this->  $model_name  ->get_all_id($id,$table_name);
    foreach ($row->result() as $val) 
    return "<option value='". $val->$field."'>".$val->$field."</option> \n" ;

}

不允许这样做:$row = $this-> $model_name

1 个答案:

答案 0 :(得分:4)

加载模型时,您可以为其指定一个通用名称,然后可以使用该名称在代码中引用该模型。

function fill_dropdown($model_name, $id, $table_name, $field){
    $this->load->model($model_name, 'myModel');
    $row = $this->myModel->get_all_id($id,$table_name);
    foreach ($row->result() as $val) 
    return "<option value='". $val->$field."'>".$val->$field."</option> \n" ;

}

请参阅Loading a Model的“user guide”部分。