高级视图功能,支持视图继承,多重继承,视图片段。
本帖最后由 kth007 于 2011-4-22 15:04 编辑入手CI也几天了,使用过很多框架,CI 是个很不错的框架。。
他足够轻巧,扩展足够强大。。等等。好处不说了。。
说说不好的地方吧。可能应该叫国人不习惯的地方吧。
1.IDE 提示太不友好了,$this->load 什么的 可以通过外置文件实现。但实例化的类库,模型什么的 均没有提示。。
2.可能扩展太强大了,让配置有些显的繁琐了。
3.很多函数不够直观。因为很多地方没提示,让英语不好的朋友可能有些吃力。
4.就是视图了,视图功能太弱了。居然不支持载入其他视图什么的。。都要过控制器去弄。。
视图本来就是前端开发的工作,只要遵守CI的规则,视图文件他喜欢怎么写都可以,怎么配置都可以,不用后台程序员插手。
要不怎么体现MVC的价值呢。.
在使用过很多框架后,我个人还是喜欢QE的视图模式。
花了点时间,扩展了一下 视图功能,让他支持 继承嵌套 多重继承 和视图片段。
忘记过去控制器里写一大堆
$this->load->view('header', $data);
$this->load->view('content');
$this->load->view('footer');
......
这样太不友好了。。
新的方式 只要在控制器载入 一个内容视图就可以了。。其他的部分 让视图去继承好了。。
控制器:
$this->load->view('home/index', $data);
比如: 被继承的视图,一般包括网页的布局 保存位置views/_layouts/main_layout.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php $this->_block('title'); ?>我的被别人继承的<?php $this->_endblock(); ?></title>
<script type="text/javascript" src="/static/js/jquery.js"></script>
<script type="text/javascript" src="/static/css/layout.js"></script>
<?php $this->_block('head'); ?><!--这里是载入私有的CSS和JS--><?php $this->_endblock(); ?>
</head>
<body>
<div>这里是头部</div>
<div>这里是导航</div>
<div>这里是左栏</div>
<div><!--这里是内容-->
<?php $this->load->_block('content'); ?><?php $this->load->_endblock(); ?></div>
</div>
<div>这里是尾部</div>
</body>
</html>
内容页面:很多网页的布局都只修改了内容部分 其他不变的。
<?php $this->load->_extends('_layouts/main_layout'); //载入继承视图?>
<?php $this->load->_block('content'); //内容块开始?>
我是内容了。内容都些这里吧。。。
<?php $this->load->_endblock(); //内容块结束?>
<?php $this->load->_block('title'); //标题块开始?>
<!--我是需要替换的标题,标题写这里吧,也可以去掉这块,保持默认的标题-->
<?php $this->load->_endblock(); //标题块结束?>
<?php $this->load->_block('head'); //CSS块开始?>
<!--载入其他私有CSS和JS。如果不需要载入,可去掉该块-->
<?php $this->load->_endblock(); //标题块结束?>
这样布局是不是很强大。一个基础视图写完布局,你可以写上多块_block
可以被所有的内容视图继承了,
当然了 多重继承也是可以了 _block 也支持多层套用。这样可以提高非常多的视图重用率
当然了还不止这些,你可以使用
<?php $this->load->_element('topnews', $topnews);?>
来支持某个视图片段 让整体视图上某一块的调用想要的视图。
这样就不需要因为某块变动布局而重新写基础继承视图了。。
使用方法下载MY_Loader.php 放到你的 application/core 下。其他写法没有变化
我的这怎么用不了啊,提示 Undefined property: MY_Loader::$_ci_view_path 我的也用不了啊,提示MY_Loader:_ci_view_path 呵呵,因人而异吧~~~还是支持楼主~~~加分~~~ 只要是分享,就是好的,就是要支持的,加分是肯定的。
PS: CI 是可以在视图文件里 load->view() 的,不过确实缺少 layout 功能。 不错,适合用在会员管理模块,后台管理模块,大家说呢 支持一下{:1_1:} 很不错 值得学习! 这个必须顶,正是我所需要的,我发现view的功能弱爆了 支持一下下 不知道效率如何???? “1.IDE 提示太不友好了,$this->load 什么的 可以通过外置文件实现。但实例化的类库,模型什么的 均没有提示。。”
-----------------------------------------
这个强烈同意,特别是想我这种刚接触ci的童鞋,不了解ci的流程结构,一头雾水
页:
[1]
2