如何处理代码标记模板?

2022-08-30 15:55:09

我对MVC相当陌生,最近我发现了CodeIgniter。我仍然每天都在学习,但一个问题是它的模板引擎。在CodeIgniter中创建模板的最佳方法是什么?

CakePHP自带模板库,CodeIgniter中是否有类似的功能?


答案 1

与其他框架不同,CodeIgniter没有全局模板系统。每个控制器独立于系统控制自己的输出,除非另有说明,否则视图均为FIFO。

例如,如果我们有一个全局标头:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd" >
<html>
    <head>
        <title><?=$title?></title>
        <!-- Javascript -->
        <?=$javascript ?>
        <!-- Stylesheets -->
        <?=$css ?>
    </head>
    <body>
        <div id="header">
            <!-- Logos, menus, etc... -->
        </div>
        <div id="content">

和全局页脚:

        </div>
        <div id="footer">
            <!-- Copyright, sitemap, links, etc... -->
        </div>
    </body>
</html>

那么我们的控制器必须看起来像

<?php
class Welcome extends Controller {

    function index() {
        $data['title'] = 'My title';
        // Javascript, CSS, etc...

        $this->load->view('header', $data);

        $data = array();
        // Content view data
        $this->load->view('my_content_view', $data);

        $data = array();
        // Copyright, sitemap, links, etc...
        $this->load->view('footer', $data);
    }
}

还有其他组合,但通过用户库存在更好的解决方案,例如:

请参阅下面的评论


答案 2

我已经尝试了几种方法来做codeigniter模板,我留下来的方式是最快和最简单的,如下所示。

在控制器中:

    //Charge the view inside array
    $data['body'] = $this->load->view('pages/contact', '', true);


    //charge the view "contact" in the other view template
    $this->load->view('template', $data);

在视图样板中.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es"> 
<head> 
    <title>Template codeigniter</title> 
</head> 
<body> 
    <div> 
        <?=$body?>
    </div> 
    <div class="clear"></div> 
    <div>Footer</div> 
    </div> 
</body> 
</html> 

$body是视图联系人。


推荐