【问题标题】:CodeIgniter - accessing $config variable in viewCodeIgniter - 在视图中访问 $config 变量
【发布时间】:2011-02-07 13:19:07
【问题描述】:

我经常需要访问视图中的$config 变量。 我知道我可以将它们从控制器传递给load->view()。 但是明确地这样做似乎有些过分。

是否有某种方法或技巧可以从 CI 视图访问 $config 变量,而无需 用多余的代码打扰控制器?

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    $this->config->item() 工作正常。

    例如,如果配置文件包含$config['foo'] = 'bar';,那么$this->config->item('foo') == 'bar'

    【讨论】:

    • 很好的有用答案
    【解决方案2】:

    此外,Common 函数config_item() 在整个 CodeIgniter 实例中几乎无处不在。控制器、模型、视图、库、助手、钩子等等。

    【讨论】:

    • 谢谢你——我在从钩子访问配置值时遇到了麻烦。对于其他人来说,这很好用。
    • 但是,config_item() 没有$this->config->item() 中提供的碰撞保护
    【解决方案3】:

    你可以这样做:

    $ci = get_instance(); // CI_Loader instance
    $ci->load->config('email');
    echo $ci->config->item('name');
    

    【讨论】:

    • 实际上在视图中 $this 指的是 CI_Loader,get_instance() 指的是 CI_Base()。
    【解决方案4】:

    $this->config->item('config_var') 不适用于我的情况。

    我只能使用config_item('config_var'); 在视图中回显变量

    【讨论】:

      【解决方案5】:

      您的控制器应该从数据库、配置等中收集所有信息。有很多充分的理由坚持这一点。一个很好的理由是,这将允许您非常轻松地更改该信息的来源,而不必对您的视图进行任何更改。

      【讨论】:

        【解决方案6】:

        我就是这样做的。在config.php中

        $config['HTML_TITLE'] = "SO TITLE test";
        

        在applications/view/header.php中(假设是html代码)

        <title><?=$this->config->item("HTML_TITLE");?> </title>
        

        【讨论】:

          【解决方案7】:

          每当我需要访问我倾向于使用的配置变量时:$this->config->config['variable_name'];

          【讨论】:

          • 我不知道为什么但是从今天开始 $this->config->item('var_name');不再为我工作了..感谢替代方式。只是想知道..这种方法合法吗?
          【解决方案8】:
          echo $this->config->config['ur config file'] 
          

          如果您的配置文件也出现在图片中,您必须像这样访问,例如我在配置文件夹中包含一个 app.php 我有一个变量

          $config['50001'] = "your  message"   
          

          现在我想在我的控制器或模型中访问。

          尝试以下两种情况,一种应该可行

          案例1:

          $msg = $this->config->item('ur config file');
          
          echo $msg['50001'];    //out put:  "your message";
          

          案例2:

           $msg = $this->config->item('50001');
          
           echo $msg;    //out put:  "your message"
          

          【讨论】:

            【解决方案9】:

            $config['cricket'] = 'bat'; 在 config.php 文件中

            $this-&gt;config-&gt;item('cricket')在视图中使用这个

            【讨论】:

              【解决方案10】:

              如果您尝试将配置变量访问到控制器而不是使用

              $this->config->item('{variable name which you define into config}');
              

              如果您尝试将配置变量访问到控制器外部(帮助程序/挂钩),请使用

              $mms = get_instance();  
              $mms->config->item('{variable which you define into config}');
              

              【讨论】:

                【解决方案11】:

                例如,如果您有:

                $config['base_url'] = 'www.example.com'
                

                然后在你的 config.php 中设置

                echo base_url();
                

                这几乎在每个地方都非常有效。
                /* 编辑 */
                这可能适用于最新版本的 codeigniter(4 及更高版本)。

                【讨论】:

                  猜你喜欢
                  • 2011-10-22
                  • 1970-01-01
                  • 2020-08-16
                  • 1970-01-01
                  • 1970-01-01
                  • 2023-03-09
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多