|
本帖最后由 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');
......
这样太不友好了。。
新的方式 只要在控制器载入 一个内容视图就可以了。。其他的部分 让视图去继承好了。。
控制器:
PHP复制代码 $this->load->view('home/index', $data);
复制代码
比如: 被继承的视图,一般包括网页的布局 保存位置views/_layouts/main_layout.php
HTML复制代码
<!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复制代码
<?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复制代码
<?php $this->load->_element('topnews', $topnews);?>
复制代码
来支持某个视图片段 让整体视图上某一块的调用想要的视图。
这样就不需要因为某块变动布局而重新写基础继承视图了。。
使用方法 下载MY_Loader.php 放到你的 application/core 下。其他写法没有变化
MY_Loader.rar
(3.18 KB, 下载次数: 226)
|
评分
-
查看全部评分
|