【问题标题】:codeigniter sidebarcodeigniter 侧边栏
【发布时间】:2011-02-02 20:24:52
【问题描述】:

我有一个小问题,我不知道该怎么办。

我有一个模板

  • 标题
  • 内容
  • 侧边栏
  • 页脚

在我的所有页面上,唯一需要更改的是内容,那么我如何将数据传递到我的侧边栏/页脚

我需要制作控制器吗?还是我需要创建一个库并将其加载到我的 template.php 文件中?

我使用这个模板系统 http://williamsconcepts.com/ci/codeigniter/libraries/template/index.html

【问题讨论】:

    标签: php codeigniter templates controller


    【解决方案1】:

    我不确定您的特定模板库,但我知道通常这是通过将视图嵌套在其他视图中来完成的,并且只要将数据加载到初始视图中,它也会传播到嵌套视图。

    没有模板库的示例

    控制器功能

    function index() {
    
        $data['some_var']    = "some value";
        $data['another_var'] = "another value";
    
        $this->load->view('first_view',$data);
    }
    

    first_view

    <? $this->load->view('header') ?>
    
    <h1>Content</h1>
    
    <? $this->load->view('sidebar') ?>
    <? $this->load->view('footer') ?>
    

    在这种情况下,加载到first_view 中的$data 传播到headersidebarfooter

    因此您可以在任何这些视图中使用$some_var$another_var

    更新

    另一种可以全局将数据加载到视图中的方法是使用此函数

    $this->load-vars($data); 
    

    $data 是您的视图数据,在您加载模板之前的这条语句应该允许在模板加载的任何视图中访问所有这些数据。虽然这一种霰弹枪方法,但这是your chosen template library 建议的方法。

    【讨论】:

    • @jondavidjohn 是个好主意,但我认为这不是最佳做法,必须有更好的方法:) 希望有其他人可以帮助我 :) 但非常感谢您的帮助; )
    • 在阅读了您的模板库文档后更新了我的答案,您可能会在某个时候查看它们;)
    • @jondavidjohn 但是我必须在我的所有控制器中输入 $this->load->vars($data) 才能让它工作:/
    • 你选择了模板库,不是我;)
    • @jondavidjohn 你认为有更好的模板吗:p?
    【解决方案2】:

    如果您只更改内容,则无需为页眉、侧边栏或页脚设置区域 - 只需将其内容添加到主模板文件即可。

    但是,如果您不经常需要更改这些区域的内容,我将为这些区域创建“默认”视图,并在每个控制器构造函数中加载,如下所示:

    $this->template->write_view('header', 'default/header');
    $this->template->write_view('sidebar', 'default/sidebar');
    $this->template->write_view('footer', 'default/footer');
    

    然后,您可以扩展这些默认区域视图或根据每个方法覆盖它们(请参阅您的库的文档以了解如何操作)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-03
      • 1970-01-01
      • 2021-06-25
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      相关资源
      最近更新 更多