用CI原生方法实现类似rails的layout和content_for的灵活视图功能
Ruby on Rails 提供了灵活的视图机制,可以在布局文件里用yield :head和 yield :content来给视图页面某段代码留个“空位” ;同时在视图文件里,将content_for :head 和 :content里包含代码块填充到布局文件里的留出的对应“空位”上:
布局文件:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Todo List</title>
<%= stylesheet_link_tag 'application' %>
<%= yield :head %>
</head>
<body>
<div id="container">
<h1>Todo List</h1>
<%= yield :content %>
</div>
</body>
</html>
视图文件:
<% content_for :head do %>
<%= stylesheet_link_tag 'projects' %>
<% end %>
<% content_for :content do %>
<h2>Projects</h2>
<% end %>
在CI也可以用原生的方法实现相似的功能:
布局文件:
<head>
<link href="general.css" rel="stylesheet">
<?php
$_vars['_partial'] = 'head';
echo $this->load->view($partial, $_vars, TRUE);
?>
</head>
<body>
<h1>Todo List</h1>
<?php
$_vars['_partial'] = 'content';
echo $this->load->view($partial, $_vars, TRUE);
?>
</body>
视图文件:
<?php if ($_partial === 'head') { ?>
<link href="project.css" rel="stylesheet">
<?php } ?>
<?php if ($_partial === 'content') { ?>
<h2>Projects</h2>
<?php } ?>
控制器:
$this->view_vars['partial'] = '视图文件名';
$this->view_vars['各种参数']...
$this->load->view('布局文件名', $this->view_vars);
总结:
主要思路是采用CI原生的Loader view机制,实现层层嵌套,实现的关键是在视图文件中对代码块的分组。
这个思路应该有不足的地方和完善的空间,请各位不吝赐教。谢谢。
CI的嵌套视图。以前也尝试过一种方法。
http://cier.ap01.aws.af.cm/index.php/docs/app/template 大道达人 发表于 2013-11-21 09:00 static/image/common/back.gif
CI的嵌套视图。以前也尝试过一种方法。
http://cier.ap01.aws.af.cm/index.php/docs/app/template ...
@大道达人 谢谢回复。:)
看了你的思路,也是用到CI的load->view机制,但是好像有个问题:就像在原帖上提到的“如何将代码分组”,
为了获得更灵活的layout/view。
p.s. 我这暂时也没别的项目,在做我们自己的一个产品最近。来这儿也比较不勤快。
一块儿学习进步吧,将来有机会合作的。谢谢。
页:
[1]