关于视图调用,我的优化方案
http://codeigniter.org.cn/forums/thread-376-1-1.html这个前几天讨论过,几种方案我觉得都不很好
昨天爬了一下rails和ci的代码,实现了一下类似rails的layout输出
实际就一小段代码
MY_Controller中增加一个render方法
function _render($viewName , $data = false , $layout = false){
//echo "this is ni render<br>";
//处理当前action调用视图的内容
$content = $this->load->view($viewName , $data , true);
//当前action视图内容在layout里显示
$data = array("ci_action_content"=> $content);
if(!$layout){
$layout = "default";
}
//得到layout视图
$this->load->view("layout/$layout" , $data);
}
添加一个layout
views/layout/default.php
<html>
<head>
<title>default layout</title>
</head>
<body>
<div>head info</div>
<div>
<?php echo $ci_action_content ?>
</div>
<div>bottom info</div>
</body>
</html>
action中使用_render生成
function test(){
$data = array("content"=>"action content");
$this->_render("test" , $data);
} 这个效果直接用view就可以达到了啊。。。
回复 2楼 的帖子
哦?怎么弄啊?
给个例子我 最简单的方式就是用一个header一个footer夹住content。
不然的话已经有人做过 layout library 了: http://codeigniter.com/wiki/layout_library/ 是有点多余,不过思路很欣赏。。。。:) 有library
超级酷 lib酷...... 还是加入smary这个强大的模版吧,不管什么layout,plugins,modifier,source都可以。
我看了fleaPHP,它的webControls其实就是一个smarty,实现了不错的view。 smarty 好是好,可是不是每个人都喜欢,呵呵~ 一个优秀的框架,除了有一个完整的功能外,还要提供方便易用的接口,
CI是一个不错的框架,它具备了一个基本的建站功能,可是,在细节功能上,还不能做到精.
特别在view上,不可能和完成的smarty比较,至少到目前为止,我还没有见到过哪个框架的VIEW能和smarty比较,包括(Zend framework, FleaPHP,ThinkPHP;Symfony还没有研过,不好说),所以,如果硬硬要开发一个CI强大的VIEW.不是好好的思路。如果一般的应用,CI的VIEW已经可以对付了。如果要做模版互嵌套,页面资源相互调用,还是用smaty的补丁,插件,函数,过滤器(输出前,输出中,输出后)..等,我想任何东西做不到唯美,善于利用别人的长处,才是硬道理.
页:
[1]
2