将数据库值设置为Config Item Codeigniter

时间:2014-07-15 05:16:05

标签: php codeigniter

我如何获得键值并将其设置为 config_item 。我一直试图通过表单和数据库来做到这一点。我似乎似乎只是手动更改配置项。

我有一个表单,它找到主题,然后将我选择的主题保存到数据库中。

Table Name Setting

setting_id = 1

group = config 

key = config_template

value = Name of theme submitted in form.

我希望能够使用$this->config->item('config_template'),以便获得价值。

因为我正在努力实现这个前端控制器

 <?php
      class Home extends CI_Controller {
        public function index() {
          if(file_exists(DIR_TEMPLATE . $this->config->item('config_template') . '/template/common/home.php')) {
             $this->load->view($this->config->item('config_template') . '/template/common/home');
          } else {
             $this->load->view('default/template/common/home');
          }
        }
      }

后端设置控制器

<?php

class Setting extends CI_Controller {

    public function index() {

        $this->load->model('setting_model');

        if ($this->input->server('REQUEST_METHOD') == 'POST') {
            $this->setting_model->editSetting('config', $this->input->post());
            redirect('store');
        }

        $data['action'] = site_url('setting');

        if (null !==($this->input->post('config_template'))) {
            $data['config_template'] = $this->input->post('config_template');
        } else {
            $data['config_template'] = $this->config->item('config_template');
        }

        $data['templates'] = array();

        $directories = glob(DIR_APPLICATION . 'views/theme/*', GLOB_ONLYDIR);

        foreach ($directories as $directory) {
            $data['templates'][] = basename($directory);
        }
        return $this->load->view('setting/setting', $data);
    }
 }

1 个答案:

答案 0 :(得分:1)

您必须在模型/控制器中编写一个钩子以从数据库中获取值并在运行时设置它,也可以在__construct()中设置它们

function __construct() {
    parent::__construct();
    //get $value from database here
    $this->config->set_item('config_template', $value);
}

然后在其余代码中,您可以使用

$this->config->item('config_template')

检索值