CodeIgniter全局设置数据库

时间:2016-09-11 23:08:32

标签: php mysql codeigniter

我正在尝试为每个控制器和视图实现全局设置。

拥有名为 config 的数据库表,其中包含

config_name | config_value
title        | My Website
email       | my@example.com

在我的 模型 中,我有查询:

function config()
{
    $query = $this->db
        ->select('*')
        ->get('config');
    return $query->result();
}

控制器 中,我以这种方式调用模型数据

$data['cfg'] = $this->config_model->config();

现在,我希望使用

视图 中显示某些配置位
<title><?php echo $cfg->title; ?></title>

但是我收到错误试图获取非对象的属性

我在 模型 查询中尝试了结果查询选项:

result();
result_array();

但它不起作用。我做错了什么?

3 个答案:

答案 0 :(得分:0)

在你的模型中试试这个:

public function config() {
  $q = $this->db->get('config')
return $q->result_array();

这在你的控制器中:

$this->load->model("config_model");
    $res = $this->config_model->get();
    if($res){
        $data['result'] = $res;
        $this->load->view('Your view here', $data);
    } else {
        echo "failed";
    }

然后你可以在你的视图中这样访问:

$result[0]['title'];

假设您的配置表只有一行。

答案 1 :(得分:0)

好的我已经简化了事情并以这种方式解决了这个问题:

将数据库表格布局更改为1行

title | email | country | city

现在它有效。以前我想要数据库布局不同,但我现在就开始使用它了。

答案 2 :(得分:-1)

可以这样使用

您的型号:

public function get() {        
$query = $this->db->get('config');        
if ($query->num_rows() > 0) 
{
    foreach ($query->result() as $row) 
    {
        $data[$row->item] = $row->val;

    }                      
    return $data;
} 
return false; 
}

在控制器中使用:

$this->load->model("config_model");           
$config = $this->config_model->get(); 

echo $config['title'];

在视图中使用:

$this->load->view('index',$config); 

结果:

<p><?=$title?></p>