我刚接触MVC,最近才找到CodeIgniter。我仍然每天在学习,但是一个问题是它的模板引擎。在CodeIgniter中创建模板的最佳方法是什么?
CakePHP带有自己的模板库,CodeIgniter中有类似的功能吗?
我刚接触MVC,最近才找到CodeIgniter。我仍然每天在学习,但是一个问题是它的模板引擎。在CodeIgniter中创建模板的最佳方法是什么?
CakePHP带有自己的模板库,CodeIgniter中有类似的功能吗?
创建一个包含所有视图的库,并将其发送到内容视图所需的数据发送给它。这就是全部!
<?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');
}
}
有一个库可让您在CodeIgniter中使用模板本机风格。 要加载模板/主题,只需:
$this->load->theme(‘theme_name’);
要从视图中加载CSS和javascript文件,您可以执行以下操作:
$this->load->css(‘path/file.css’);
$this->load->js(‘path/file.js’);
您可以选择控制浏览器缓存CSS和JS文件的方式。
我有两个主要模板;一个用于网站,另一个用于我们的管理面板。这是我为主站点的设置(主要是静态的)...我决定使用一个名为site
的控制器,它将调用模板文件和每个页面,并获取其视图文件。
为什么没有人提到模板引擎的使用? 只是更好/更快地观看?
在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
控制器主要是单段网址,但我们确实
有一个 section 具有这样的结构; /我们是谁,然后
对于选定的人 / who-we-are / robert-wayne ,等等:
$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...
好的一点是,路由器让我们在网址中省略了“ / site /”, http:// the site.com/who-we-are
有什么想法?任何人? bueller?我尝试了几种方法来制作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);
在view 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
是视图联系人。
我将CodeIgniter与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中显示。
您可以做的另一件很酷的事情是使用此列表模板处理非文章内容。您可以有一个用户列表或页面列表等等。在某些情况下,重用这样的模板会很有用。并非总是如此,但有时。
设置Smart的CodeIgniter非常简单。只需将Smarty文件复制到您的库文件夹并为其创建一个简单的包装即可。您可以在此处找到说明:
http://devcha.blogspot .com / 2007/12 / smarty-as-template-engine-in-code.html
设置好后,就很好了。
与其他框架不同,CodeIgniter没有全局模板系统。除非另有说明,否则每个Controller都会独立于系统控制自己的输出,并且视图是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);
}
}
还有其他组合,但是更好的解决方案是通过以下用户库提供的:
查看下面的评论
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);
}
}
?>
示例视图:
<html>
<head>
<title><?php echo $title;?></title>
</head>
<body>
<h1><?php echo $heading;?></h1>
</body>
</html>
在此处的文档中了解更多信息: CodeIgniter用户指南:视图
是的,是的。但是我想知道是否有任何方法可以加快此过程并使它更有条理-所以我不必键入 ,
,样式等……我只想拥有它一个文件夹或库。认为它是wordpress,您可以更改模板而无需编辑每个视图。– MartinJune 23, 2009 00:10