只在一个地方加载站点全局变量,并在任何地方使用


loading site global variables in one place only and use everywhere

如何加载application/config/site_globals.php以获取变量并在每个控制器中使用它们(与钩子相同的locig(,而不在每个控制器上启动它?我需要使用变量,并且不想在会话中保留它们。

这就是我们通常启动它的方式:

$this->load->config('site_globals');
$my_globals = $this->config->item('site');
echo $my_globals['header_note']; //for example, there are many more

上面的代码必须在每个控制器中复制,这很痛苦。

感谢

application/config/content.php文件用于此目的。

创建一个扩展CI_Controller的MY_Coontroller,在MY_controllers构造函数中加载全局变量,然后确保所有其他控制器都扩展了MY_Contrller而不是CI_Controller。

请参阅文档:http://ellislab.com/codeigniter/user-guide/general/core_classes.html

为了记录,可以对所有核心类(即MY_Session、MY_Model等(执行相同的操作。如果你使用它们,重复代码会变得容易得多。

    class Custom_Controller extends CI_Controller
{
  $this->load->config('site_globals');
  $my_globals = $this->config->item('site');
  echo $my_globals['header_note'];
}

然后,在每个需要使用这些全局变量的控制器中,您可以使用它,例如:

    class Example extends Custom_Controller
{
  //your code here
}