我是Codeigniter的新手。 我的数据库中有一个名为'sysConfig'的表,其中包含标题,货币单位,许可证密钥和......等列。
我希望将这个表记录的第一行(它只有一条记录)放到一个名为'$ Config'的全局变量中,它在所有视图中都可用(如果它可能在模型和控制器中可用)。
编辑:
我可以从数据库中选择任何数据,我对此没有任何问题。我想在一个名为$ Config的变量中选择表sysConfig上的数据并直接访问它,如<?php echo $Config['Title']; ?>
或<?php echo $Config -> Title; ?>
。
答案 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语言完全相反。