如何应对笨模板?(How to Deal With Codeigniter Templates?)

2019-06-23 22:19发布

我是相当新的MVC,我发现最近笨。 我还在学习日常生活,但有一个问题是它的模板引擎。 什么是笨创建模板的最好方法?

CakePHP附带自己的模板库,有没有笨了类似的功能?

Answer 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);
    }
}

还有其他的组合,而是通过类似的用户库,存在更好的解决方案:

请参见下面的评论



Answer 2:

我试过几种方法可以做到笨模板和我住的是最简单快速的方式,如下。

在控制器:

    //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);

鉴于的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> 

$body是查看联系人。



Answer 3:

让包括所有的意见图书馆和发送,您需要发送到您的内容视图的数据。 这是所有的了!

<?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');        
    }
}


Answer 4:

这个库,易于使用和定制,并你所期望的正是:

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

最简单的模板库笨



Answer 5:

我用笨使用Smarty,它是伟大的(如果你喜欢Smarty的,我这样做)。

假设你有一个文章控制器,你可以在里面做服用点是这样的:

class Article extends Controller {
  function show_all() {
    $articles = $this->article_model->get_all();
    $this->smarty->assign('entities', $articles);
    $this->smarty->view('list');
  }
}

然后在您的模板:

{include file="header.tpl"}
  <ul>
  {foreach from=$entities item=entity}
  <li>{$entity.title}</li>
  {/foreach}
  </ul>
{include file="footer.tpl"}

关于这个的好处是,该控制器并不真正需要了解的页眉和页脚。 它只是知道一组文章应显示为列表。 从那里,它只是负责定义如何显示的事情的清单,在这种情况下,在页眉和页脚之间的UL的模板。

你可以做的另一件很酷的事情就是使用此列表模板的东西并不文章。 你可以有用户或页面或任何名单。 在某些情况下,重复使用的模板这样会很有用。 不总是,但有时。

对于Smarty的设置笨是非常简单的。 这是Smarty的文件复制到库文件夹,并为它创建一个简单的包装的问题。 你可以在这里找到的说明:

http://devcha.blogspot.com/2007/12/smarty-as-template-engine-in-code.html

一旦你设置了它的伟大。



Answer 6:

我有两个主要的模板; 一个网站和一个为我们的管理面板。 这里是我的设置对于我们的主网站(大多是静态的)......我决定叫一个控制器上site ,它调用模板文件和每个网页并获取视图文件。

为什么没有人提到模板引擎的使用? 是-just-更好的意见/更快

  • config/template.php我所定义的模板(或多个)。 注* site_template *是在views文件夹:

     $template['site']['template'] = 'site_template'; $template['site']['regions'] = array('title','section','col2','content',); $template['site']['parser'] = 'parser'; $template['site']['parser_method'] = 'parse'; $template['site']['parse_template'] = FALSE; 
  • config/routers.php我设置的规则来处理该请求site分别是单段的网址大多控制器,但我们确实有一个部分 ,其构造为这样的; /谁,我们,是 ,然后选择人/谁,我们-是/罗伯特-韦恩等:

     $route['what-we-do'] = 'site/what_we_do'; $route['who-we-are'] = 'site/who_we_are'; $route['who-we-are/(:any)'] = "site/who_we_are/$1" 
  • controllers/site.php为每个页/部分功能还是那句话:

     class Site extends CI_Controller { function __construct() { parent::__construct(); $this->template->set_template('site'); // ask for the site template $this->load->library('mobile'); } public function index() { $data = array('section' => 'home'); $this->template->write_view('col2', 'site/menu.php', $data); $this->template->write('title', "COOL PAGE TITLE", TRUE); $this->template->write('section', $data['section'], TRUE); $this->template->write_view('content', 'site/welcome', $data); $this->template->render(); } public function who_we_are() { // this bit readies the second segment. $slug = str_replace('-', '_', $this->uri->segment(2, 0)); if($slug) // IF there is a second segment we load the person. { $data['bio'] = $this->load->view('site/people/'.$slug, '', true) } else { // where it loads the general view who_we_are } // and so on for each page... 

和细点通知路由器让我们离开了`/网站/”在URL,HTTP://的site.com/who-we-are

想法? 任何人? bueller?



Answer 7:

那么实际上你可以使用一个笨库模板。 最著名的有:

  1. 笨简单 (积极开发)
  2. 菲尔鲟鱼的模板库 (不积极开发)
  3. 简介CI中观点与模板 (在这里,你实际上是从头开始创建一个模板库)


Answer 8:

我对卡梅隆通过做Capinpin这个模板库偏颇,因为它是如此易于使用: 链接文本 。 只要拷贝文件在您的图书馆,你准备好去。 关于如何使用它为我提供的链接说明。



Answer 9:

有一个库,它允许你使用模板CI中的原生风格。 要加载模板/主题只是做:

$this->load->theme(‘theme_name’);

要加载CSS和JavaScript文件从你的意见,你可以这样做:

$this->load->css(‘path/file.css’);
$this->load->js(‘path/file.js’);

您可以选择控制方式的浏览器缓存的CSS和JS文件。



Answer 10:

一个笨模板通常只是一个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);
    }
}
?>

样品观点:

<html>
<head>
<title><?php echo $title;?></title>
</head>
<body>
    <h1><?php echo $heading;?></h1>
</body>
</html>

详情请阅读这里的文档: CodeIgniter用户指南:查看



Answer 11:

请允许我提出了一个更简单的方法来做到这一点。 考虑我的回答类似的问题 。

优点:

  1. 您的模板文件可以是一个完整的HTML文件。 你不必打破了页眉和页脚。
  2. 任何视图文件可以变成以最小的努力的模板。
  3. 为特定视图的数据可以在模板来生成。

缺点:1。你可能需要添加一个template (或layout -如果你想这样做的Rails的方式)目录下的意见,以便正确地组织你的代码。 这遵循优点[2]。 2.来自控制器的特定视图的数据必须首先被传递给模板。



Answer 12:

那么codeignier没有默认情况下,这样的库。 但是如果你想不同的主题,观点,以及资产管理尝试使用这样的:

https://github.com/mahadazad/php-layout-manager



文章来源: How to Deal With Codeigniter Templates?