1

我是 Codeigniter 的新手。您如何集成模板?就像是:

header_template.php 等...

现在我这样做:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Page extends CI_Controller {

    public function index()
    {   
        $this->load->view('head_template.php');
        $this->load->view('header_template.php');
        $this->load->view('navigation_template.php');
        $this->load->view('page_view.php');
        $this->load->view('footer_template.php');

    }
}

虽然这很好,但必须有更好的方法。我必须将它包含在每个控制器中,这有点吓人。

我知道模板引擎,但这不是我想要的。另外,它在 Codeigniter 文档中说它很慢。

4

5 回答 5

2

使用这个寺庙引擎也很容易和很好的文档

检查这个 git repo 以获取带有 CI 和模板引擎的示例应用程序

github.com/mrsrinivas/ci_template

于 2013-01-03T09:16:30.277 回答
1
 public function index()
{   
    $data["header"]     = $this->load->view('head_template.php',"",true);
    $data["navigation"] = $this->load->view('navigation_template.php',"",true);
    $data["footer"] = $this->load->view('footer_template.php',"",true);
    $this->load->view('page_view.php', $data, false);
}

在你的“page_view.php”里面

<html>
<body>
<?php
  echo $header;
  echo $navigation;
  echo $footer;
?>
</body>
</html>

您可以在 -http://www.codeignitor.com/user_guide/general/views.html 找到更多信息

包含的代码仅用于模板包含的示例-

class Template extends CI_Controller{

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

/**
 * TODO: Get the template from database or some configuration file
 * 
 * 1) Get Template hook
 * 2) Get Header
 * 3) Get Footer
 * 4) Get other hooks
 */
public function loadTemplate($viewName, $headerData = "", 
                            $viewData="", $footerData=""){
    $headerData["userId"] = (is_numeric($this->CI->session->userdata("userId")))
                            ? $this->CI->session->userdata("userId") : null;                            
    $this->CI->load->view('header/header', $headerData);
    $this->CI->load->view($viewName, $viewData);
    $this->CI->load->view('footer/footer', $footerData);
}
}

// 模板类以进一步的代码结束

// Login.php that extends template class
class Login extends Template {
  public function Login() {
    parent :: __construct();
}

  public function getUserDetails(){
    $userDetails = $this->loadTemplate("myDataNeedToshow");

}
}
于 2013-01-03T09:26:04.650 回答
0

助手可以帮助您进行干净的集成。我的示例代码:

辅助函数

控制器

于 2013-07-13T05:30:34.237 回答
0

上一个评论者列出的模板引擎很好,但是很长一段时间没有更新,对于您的目标可能有点矫枉过正。

虽然这可能有效,但我相信这个非常简单的布局库正是您正在寻找的。

这是非常非常基本的,但可以完成工作。我过去已经扩展它以轻松地允许多个“内容部分”,但我通常使用它只是为了快速获取 html 页眉和页脚。

于 2013-01-03T09:24:52.623 回答
0

我所做的是在视图文件夹中有一个名为 template.php 的文件,如下所示:

views/template.php:
<?= $this->load->view('header_view');?>
<?= $this->load->view($load_page);?>
<?= $this->load->view('footer_view');?>

然后在控制器中我这样称呼它:

页面.php:

$page = array(
        'meta_title' => 'Register Package',
        'load_page' => 'package_view'
        );
        $this->load->view('template', $page);

我确定有更好的方法,但我会在有时间的时候研究一下

于 2013-01-06T20:07:11.457 回答