codeigniter模型的全局数组

时间:2016-08-24 05:37:30

标签: php codeigniter codeigniter-3

在我的控制器中,我想声明一个全局变量,它总是从我的db

中获取所有区域

目前我正在通过$data['dropdowns'] 在我班上的所有方法

{
$data['dropdowns']=loading some other model method
$this->load->view('commons/header',$data);  
}

{
  $data['dropdowns']=loading some other model metod
$this->load->view('commons/header',$data);  
}

{
  $data['dropdowns']=loading some other model metod
$this->load->view('commons/header',$data);  
}

{
   $data['dropdowns']=loading some other model metod
$this->load->view('commons/header',$data);  
}

问题是我现在要将$data['area']发送到所有视图,而不必在每个方法中一次又一次地声明它

$data['area']= $this->area_model->get_all_locations();

3 个答案:

答案 0 :(得分:1)

您想要添加全局变量,但根据我的建议使用全局函数来使用任何使用位置来发送参数,所以请在下面查看我的代码。
注意:请在application / config / autoload.php文件中加载您的模型

这是一个简单的演示: 控制器

{
 $data['dropdowns']=$this->your_model_name->get_records('table_name','select field like id, name');
 $this->load->view('commons/header',$data);  
}

{
 $data['dropdowns']=$this->your_model_name->get_records('table_name','select field like id, name,user_name');
 $this->load->view('commons/header',$data);  
}

你的模特

function get_records($table_name,$field_name)
{
   $this->db->select("$field_name");
   $this->db->from("$table_name");
   $query=$this->db->get();

    return $query->result_array();

}

答案 1 :(得分:1)

创建一个base_controller并放在application / core

class base_controller extends CI_Controller
{
    public $area = array();
    function __construct()
    {
        // Call the Controller constructor
        parent::__construct();
        $this->get_area();
    }
    public function get_area() {
        $this->load->model('area_model');
        $this->area= $this->area_model->get_all_locations();
    }
}

现在$ this->区域在所有控制器中都可用,它扩展了base_controller以及你可以放在这里的所有常用功能

class homepage extends base_controller{
    function __construct()
    {
        // Call the Controller constructor
        parent::__construct();

    }
public function index()
    {
        $data = $this->area; // call this wherever u need
        $this->load->view('commons/header',$data);

    }

}

重要的是$ this-> area;一个人可以直接在视图内使用

答案 2 :(得分:0)

为自定义函数创建帮助程序

例如:custom_helper.php然后在autoload.php

中加载自定义助手

custom_helper.php中,创建一个获取区域的功能。

if (!function_exists('get_area')) {
    function get_area() {
        $CI = & get_instance(); 
        $area= $CI->area_model->get_all_locations();
        return $area;
    }
}

您可以在视图中调用get_area()而无需在控制器中声明..