Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codeigniter默认布局类似于细枝_Codeigniter_Templates_Views - Fatal编程技术网

Codeigniter默认布局类似于细枝

Codeigniter默认布局类似于细枝,codeigniter,templates,views,Codeigniter,Templates,Views,我想知道如何在codeigniter中实现这一点,因为在控制器中始终包含这一代码有点麻烦 $this->load->view('header'); $this->load->view('content_view',$data); $this->load->view('footer'); 在twig中,可以定义默认模板base.html.twig,如下所示: <html> <body> {% block content %}

我想知道如何在codeigniter中实现这一点,因为在控制器中始终包含这一代码有点麻烦

$this->load->view('header');
$this->load->view('content_view',$data);
$this->load->view('footer');
在twig中,可以定义默认模板base.html.twig,如下所示:

<html>
<body>
    {% block content %}
    {% endblock %}
</body>
</html>
所以我只需要在我的控制器中调用它

$this->load->view('content_view',$data);
瞧,系统会加载我的默认模板和我的内容视图数据

我不想使用图书馆或类似的东西。我希望在不使用第三方软件的情况下实现此功能

编辑:

我在这里看到了一个好主意,第一个答案

但它只是接近我想要实现的,更像是细枝模板引擎

假设我想在默认模板、导航以及网站名称和页面标题中添加另一个块:

<html>
<head>
    <title>{{ app_name }} :: {{ page_title }}</title>
</head>
<body>
<div id="navi">
    {% block navi %}
    {% endblock %}
</div>

<div id="content">
    {% block content %}
    {% endblock %}
</div>
</body>
</html>
现在,即使变量位于不同的位置,因为它们都从一个默认页面链接,所以这些值将一起打印

<html>
<head>
    <title>Example :: About</title>
</head>
<body>
<div id="navi">
    <ul>
        <li>Home</li>
        <li class="active">About</li>
        <li>Contact</li>
    </ul>
</div>

<div id="content">
    <h3>About this Site</h3>

    blah, blah blah
</div>
</body>
</html>

示例::关于
  • 关于
  • 接触
关于此站点 废话,废话
您可以采用以下方法:

<?php
    #controller
    $data           = array();
    $data['title']  = 'Home Page';
    $data['main']   = 'index';
    $this->load->view('template', $data);   
?>

这是template.php文件

<!-- save as template.php -->
<html>
<head>
    <title><?=$title?></title>
</head>
<body>
<div id="navi">
    <?php $this->load->view('header') ?>
</div>

<div id="content">
    <?php $this->load->view($main) ?>
</div>
</body>
</html>


现在执行header.php文件中所有与导航相关的代码

如果我想在“主页”上传递数据怎么办?
此行
$this->load->view('template',$data)
正在将
$data
发布到主页面。在
index.php
页面上,您将获得变量
$title
@user949000。是的,你说得对@神秘的ツ.
<html>
<head>
    <title>Example :: About</title>
</head>
<body>
<div id="navi">
    <ul>
        <li>Home</li>
        <li class="active">About</li>
        <li>Contact</li>
    </ul>
</div>

<div id="content">
    <h3>About this Site</h3>

    blah, blah blah
</div>
</body>
</html>
<?php
    #controller
    $data           = array();
    $data['title']  = 'Home Page';
    $data['main']   = 'index';
    $this->load->view('template', $data);   
?>
<!-- save as template.php -->
<html>
<head>
    <title><?=$title?></title>
</head>
<body>
<div id="navi">
    <?php $this->load->view('header') ?>
</div>

<div id="content">
    <?php $this->load->view($main) ?>
</div>
</body>
</html>