从全局变量中的数据库获取用户配置

时间:2016-09-28 14:06:28

标签: php codeigniter configuration codeigniter-2 codeigniter-3

我是Codeigniter的新手。 我的数据库中有一个名为'sysConfig'的表,其中包含标题,货币单位,许可证密钥和......等列。

我希望将这个表记录的第一行(它只有一条记录)放到一个名为'$ Config'的全局变量中,它在所有视图中都可用(如果它可能在模型和控制器中可用)。

编辑: 我可以从数据库中选择任何数据,我对此没有任何问题。我想在一个名为$ Config的变量中选择表sysConfig上的数据并直接访问它,如<?php echo $Config['Title']; ?><?php echo $Config -> Title; ?>

2 个答案:

答案 0 :(得分:0)

如果这些是系统配置项,最好的方法是将它们加载到您自己的配置文件中。

创建自己的配置文件。手动加载或自动加载。

$this->config->load('filename');

像这样访问其中的项目

$this->config->item('item_name');

您还可以使用以下方式动态设置配置项:

$this->config->set_item('item_name', 'item_value');

您可以在文档中查看相关内容:http://www.codeigniter.com/user_guide/libraries/config.html

或者,如果这是基于用户的,则将信息收集到当前会话中并访问该会话。虽然访问模型或库中的会话变量不是一个好主意。您应该将所需的项目作为函数参数传递。

答案 1 :(得分:0)

一种方法是向需要sysConfig数据的任何控制器添加属性。变量的名称不应该是$ config,因为CI已经使用了该符号 - 它由Config类定义和设置。因此,对于这个答案,我将使用$sysConfig

class Some_controller extends CI_Controller
{
  protected $sysConfig; //class property with scope to this controller

  public function __construct()
  {
    parent :: __construct();
    $this->load->model('sysConfig_model');
  } 

sysConfig_model(未显示)管理您似乎已建立的表格。我正在为该模型编写函数,因为您没有向我们展示任何代码。模型函数get($id)根据$id检索所需的“用户”,并返回数组中的数据。 (不显示具有有效值的$id设置。)

控制器可以根据需要通过$this->sysConfig使用属性,就像在这个公认的简单的组合控制器功能中一样。

类定义继续......

  public function format_title()
  {
     if(isset($this->sysConfig){
       $this->sysConfig['suckup'] = "the most highly regarded " 
       . $this->sysConfig['title'] 
       . " in the world visit our site!";
     }
  }

实际上,为$this->sysConfig分配值会在下一段代码中发生。在此示例中,控制器的index()函数可以接收一个参数,该参数是我们想要从数据库中获取的用户的“ID”。

  public function index($id = NULL)
  {
    //assign data to the class property $sysConfig from the model
     $this->sysConfig = $this->sysConfig_model->get($id); 

该属性可以很容易地传递给视图。首先,我们做一些吸吮。

     $this->format_title(); 
     $data['userStuff'] = $this->sysConfig;
     $this->load->view('some_view', $data);
  } //end of index()

} //end of class Some_controller

some_view.php

<div>
  <h4>Welcome <?php echo $userStuff['firstName']. " " . $userStuff['lastName']; ?></h4>
  <p>I cannot say how swell it is to have <?php echo $userStuff['suckup']; ?></p>
</div>

“全局”的概念与PHP中的OOP方法或任何其他OOP语言完全相反。