如何处理Codeigniter模板?

Mar*_*tin 27 php templates codeigniter

我对MVC很新,最近我找到了CodeIgniter.我每天都在学习,但一个问题是它的模板引擎.在CodeIgniter中创建模板的最佳方法是什么?

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

Rya*_*her 25

与其他框架不同,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">
Run Code Online (Sandbox Code Playgroud)

和全球页脚:

        </div>
        <div id="footer">
            <!-- Copyright, sitemap, links, etc... -->
        </div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

然后我们的控制器必须看起来像

<?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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

见下面的评论


jru*_*afa 14

我已经尝试了几种方法来做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);
Run Code Online (Sandbox Code Playgroud)

在视图template.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> 
Run Code Online (Sandbox Code Playgroud)

$body 是视图联系人.


小智 13

创建一个包含所有视图的库,并将其发送到您需要发送到内容视图的数据.这是所有的了!

<?php
class Display_lib
{

    public function user_page($data,$name)
    {
        $CI =& get_instance ();

        $CI->load->view('preheader_view',$data);
        $CI->load->view('header_view');
        $CI->load->view('top_navigation_view');
        $CI->load->view($name.'_view',$data);
        $CI->load->view('leftblock_view',$data);
        $CI->load->view('rightblock_view',$data);
        $CI->load->view('footer_view');        
    }
}
Run Code Online (Sandbox Code Playgroud)


Jer*_*ale 5

该库易于使用和自定义,完全符合您的期望:

  • 避免HTML重复(页眉,页脚..)
  • 无需学习新语言(!)

CodeIgniter的最简单模板库

  • 我最喜欢的一点是,它保留了我最喜欢的 CI 基本模板的特点:PHP 短标签,而不是像 Smarty 那样切换到不同的语法。 (2认同)

pix*_*x0r 0

Codeigniter 模板通常只是一个 PHP 文件。您可以使用所有常用的 PHP 语法来输出变量、执行循环以及调用其他 PHP 代码。

控制器示例:

<?php
class Blog extends Controller {

    function index()
    {
        $data['title'] = "My Real Title";
        $data['heading'] = "My Real Heading";

        $this->load->view('blogview', $data);
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

示例视图:

<html>
<head>
<title><?php echo $title;?></title>
</head>
<body>
    <h1><?php echo $heading;?></h1>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在此处的文档中阅读更多内容:CodeIgniter 用户指南:视图