【问题标题】:Codeigniter Views with Dynamic Parameters具有动态参数的 Codeigniter 视图
【发布时间】:2011-09-05 18:26:03
【问题描述】:

我从控制器加载多个视图,以显示一个页面。

$this->load->view('header');
$this->load->view('content', $data);
$this->load->view('sidebar1', $data1);
$this->load->view('sidebar2', $data2);
$this->load->view('footer');

但是我认为这不是一个干净的方法。是否可以通过创建单个主视图来改进它,例如“视图/页面”,其中包含所有上述视图。然后我可以只调用主视图,而不是调用所有上述视图,例如:

$this->load->view('main');

在这种情况下,如何传递内容的变量 sidebar1 和 sidebar2? 谢谢

【问题讨论】:

    标签: codeigniter


    【解决方案1】:

    将每个视图的数据作为数组传递给主视图,然后在主视图加载子视图时传递这些数组。

    $data['sidebar1_data'] = array($one => 'one');
    $data['sidebar2_data'] = array($two => 'two');
    

    然后在你的主视图中:

    $this->load->view('sidebar1', $sidebar1_data);
    $this->load->view('sidebar2', $sidebar2_data);
    

    【讨论】:

      【解决方案2】:

      在我的项目中,我倾向于这样做:

      $this->load->vars($data);
      $this->load->view('template_name');
      

      我的模板在其自身的其他视图中加载的位置。

      CodeIgniter 文档为 $this->load->vars() 方法声明了以下内容:

      "此函数将关联数组作为输入,并使用 PHP 提取函数生成变量。此函数产生的结果与使用上述 $this->load->view() 函数的第二个参数相同。如果您想在控制器的构造函数中设置一些全局变量并使它们在从任何函数加载的任何视图文件中可用,则可能希望独立使用此函数。您可以多次调用此函数。数据被缓存并合并为一个数组转换为变量。"

      使用 $this->load->vars($data) 有助于不必为我的模板中的每个视图加载数据。

      【讨论】:

        【解决方案3】:

        这样使用

             $newData = array_merge($data, $data1, $data2);
             $this->load->view('main', $newData);
        

        如果 $data, $data1, $data2 中没有同名的键,那么它可以在不修改任何视图的变量名称更改的情况下工作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多