我是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文档中的速度很慢。
答案 0 :(得分:2)
答案 1 :(得分: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");
}
}
答案 2 :(得分:0)
上一位评论者列出的模板引擎很不错,但是在很长一段时间内都没有更新,而且对于你的目标可能有些过分。
虽然这可行,但我相信this very simple layout library正是您所寻找的。
这是非常基本的,但完成工作。我在过去扩展它以便轻松地允许多个“内容部分”,但我通常只是用它来快速获取html页眉和页脚。
答案 3 :(得分:0)
我所做的是在views文件夹中有一个名为template.php的文件,如下所示:
views/template.php:
<?= $this->load->view('header_view');?>
<?= $this->load->view($load_page);?>
<?= $this->load->view('footer_view');?>
然后在控制器中我称之为:
page.php文件:
$page = array(
'meta_title' => 'Register Package',
'load_page' => 'package_view'
);
$this->load->view('template', $page);
我确信有更好的方法,但是当我有时间的时候我会调查它
答案 4 :(得分:0)