Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CodeIgniter视图中的全局变量_Codeigniter_Global Variables - Fatal编程技术网

CodeIgniter视图中的全局变量

CodeIgniter视图中的全局变量,codeigniter,global-variables,Codeigniter,Global Variables,下面我将使用CodeIgniter实现Basecamp风格的子域 基于调用的子域,数据库中的子域表返回对应于该子域的扩展名。比如说对于stackoverflow.mywebsite.com,它将返回扩展名sf,整个网站使用的图像文件夹和CSS文件将根据此扩展名进行更改;例如,images\u-sf,style\u-sf.css,等等 现在,在M、V或C中获取此扩展的最佳方法是什么 选项: 饼干 动态设置CI配置变量 在MY_Controller中为此设置一个变量,并通过$this->任何地方访问

下面我将使用CodeIgniter实现Basecamp风格的子域

基于调用的子域,数据库中的子域表返回对应于该子域的扩展名。比如说对于
stackoverflow.mywebsite.com
,它将返回扩展名
sf
,整个网站使用的图像文件夹和CSS文件将根据此扩展名进行更改;例如,
images\u-sf
style\u-sf.css
,等等

现在,在M、V或C中获取此扩展的最佳方法是什么

选项:

  • 饼干
  • 动态设置CI配置变量
  • MY_Controller
    中为此设置一个变量,并通过
    $this->
    任何地方访问该变量
  • 将该变量从每个控制器发送到模型、帮助器、视图或库
  • 我是否错过了其他选择?另外,假设这将在整个代码中大量使用,那么哪一个是最好的


    感谢

    我个人,我会为您扩展的每个站点创建一个基本控制器,只需使用
    $this->load->vars($data)
    加载需要全局设置的信息

    在特定基本控制器的构造函数中,只需像这样全局地将数据加载到视图中

    $data->some_var = "some value";
    $this->load->vars($data);
    

    然后,在此控制器(或基本控制器)加载的所有视图中,您可以直接在视图中使用变量
    $some\u var

    您最好的选择可能是选项3,将其放在基本控制器的构造函数中,可能是MY\u控制器或任何您正在扩展的控制器中(现在是CI2.0官方版本的CI_控制器)

    然而,如果您所做的只是获取一个扩展名,那么可能没有理由拥有一个数据库表,因为您可以将它保存在一个配置文件中

    我会这样做……在我的_Controller.php中(这是CI 2.0语法)


    我必须从db获取它,因为有1000个子域在使用应用程序。因此,在配置中硬编码它们可能不是最好的…可能是动态设置配置项?或者使用php定义设置?不是通过php定义设置它们才是最好的方法吗?我确信一旦设置,它们在脚本执行期间将永远不会更改。你的问题可能有点错误领先,因为在标题中,您询问了CodeIgniter视图,但在问题中,您询问了如何将信息加载到所有M、V和C中。此方法将全局地将这些变量加载到此控制器加载的视图中。
    
    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
    class MY_Controller extends CI_Controller {
    
          function __construct()
          {
               parent::__construct();
    
               $subdomain_arr = explode('.', $_SERVER['HTTP_HOST'], 2);  
               $subdomain_name = $subdomain_arr[0];  
    
               $this->load->config('sub_prefix');
               $pre_arr = $this->config->item('prefixes');
    
               /* Check to make sure the subdomain name is in the config array */
               $this->prefix = isset($pre_arr[$subdomain_name]) ? $pre_arr[$subdomain_name] : '';
          }
    
    <?php if (! defined('BASEPATH')) exit('No direct script access');
    
        $config['prefixes'] = array('subdomain1' => 'sub1', 
                                    'stackoverflow' => 'sf');