【问题标题】:How do I automatically load a header and footer view?如何自动加载页眉和页脚视图?
【发布时间】:2019-12-09 05:48:04
【问题描述】:

我是使用 CodeIgniter 的新手,但我对 mvc 结构和 CodeIgniter 本身有足够的了解,可以做一些简单的事情,比如在控制器中加载视图和自动加载库等。但我遇到的问题是我有一个页眉和页脚视图,我希望每次加载视图文件时自动加载。

我进行了一些搜索,但很多建议都过时了,或者有时我根本不明白解决方案。我已经创建了标题视图并在其中链接了我的 CSS,还创建了我的页脚视图。所以假设我想加载默认的欢迎页面,如下所示:

public function index() {
      $this->load->view('welcome_message');
}

我可以像这样手动加载它们:

public function index() {
      $this->load->view('common/header');
      $this->load->view('welcome_message');
      $this->load->view('common/footer');
}

但我想要的是像正常一样加载视图并自动加载我的页眉和页脚。我知道这需要使用具有某种模板功能的自定义库来完成,但我不知道如何从头开始。

【问题讨论】:

  • 为什么不使用基本控制器并从那里加载页眉和页脚?

标签: php codeigniter codeigniter-3 codeigniter-2


【解决方案1】:

我这样做了,它对我有用。

MY_Loader.php

class MY_Loader extends CI_Loader{
    public function template($content,$var=array()){
        $this->view('common/header');
        $this->view($content,$var);
        $this->view('common/footer');
    }
}

放入core文件夹。

在你的控制器中:

 public function index(){
   $content = "welcome_message";
   $data = array();
   $data['name'] = "Max";
   $data['country'] = "USA";
   $this->load->template($content,$data);
 }

调用视图中的数据:

<html>
  <?php echo $name.' - '.$country; ?>
</html>

【讨论】:

  • 啊,漂亮又简单!你如何传递数据呢?对于正在传递的任何数据,我是否需要向模板函数添加第二个参数?
  • 我知道这是很久以前发布的,但是使用它不允许我将视图文件放在主视图文件夹的子文件夹中,有什么补救措施吗?
【解决方案2】:

创建一个名为MY_Controller 的核心控制器类,并使每个控制器都扩展该控制器:

class MY_Controller extends CI_Controller
{

    public $data = array();

    public function __construct()
    {
        parent::__construct();
    }

    public function render($view)
    {
        $this->view('layouts/header', $this->data);
        $this->view($view, $this->data);
        $this->view('layouts/footer', $this->data);
    }

}

现在在您的控制器中:

class Welcome extends MY_Controller
{

    public function __construct()
    {
        parent::__construct();
    }

    public function index()
    {
        $this->data['title'] = 'Welcome Home';
        $this->render('welcome_view');
    }

}

【讨论】:

    猜你喜欢
    • 2012-01-25
    • 2023-03-17
    • 1970-01-01
    • 2013-05-07
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多