|
本帖最后由 songah 于 2011-5-24 10:40 编辑
用CI也算是有一段时间了,整了不少东西,但大多数都不知道丢哪里去了,最近做毕业论文,做了个在线的调查系统,和大家分享下。简单讲一下架构,在底层使用了ci的插件datamapper,构建对象关系模型,而整个网站ci实际上只处理了model和controller,View层完全有浏览器端JS的MVC处理了。又有了Datamapper构造底层的ORM,模型处理也不用我管了,就定义几个类就OK,非常方便。呵呵,到最后就整了几个controller,而且都还差不多,获得数据后直接生产JSON数据。或者说,这似乎更像是一个前端产品,和CI没啥太大的关系,也许我仅仅需要一个ORM处理数据就OK了。
不过想想,我觉得用PHP来处理view是在不方便,view中的html结构变化太剧烈了,而且这种变化经常是根据某个事件的发生而变化的,跟踪事件的变化而处理数据,这还是由JS完成好一些。我想,过段时间有机会,把CI的view层去掉,再强化一下ORM处理能力,这样的CI也许更适合我。
其中,还加上两个PHP5.3的函数,str_getcsv和json_decode,json_encode函数的兼容函数,这里json太重要了,所以必须加上这两个东东。
运行说明:首先默认控制器为users,在构造器中进行权限判断
PHP复制代码 $fn = $this->uri->segment(2);
if($fn != 'login' AND $fn != 'logout' AND $fn)
{
if(!$this->session->userdata('id') > 0 OR $this->session->userdata("type") != "research" )
{
$message = array('error' => '没有权限');
echo json_encode($message);
exit();
}
}
[color =rgb (0, 0, 0)][size =12px ][color =#444444] 复制代码
然后再index函数中加载视图PHP复制代码 [/size][/color]
[color=rgb(0, 0, 0)][size=12px] $this->load->view('admin/research_index');
复制代码
视图就一个简单的html定义,使用了minfy加载css,整个body下放一个div,初始化时显示加载中,然后其他的事情就交给js完成了。Backbone负责处理前端模型,所有的对模型的操作发送到edit函数中,所有集合操作发送到lists函数中。js都放在assets/js/app里
HTML复制代码
<!DOCTYPE HTML>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="min/?f=assets/css/common.css,assets/css/reset.css,assets/css/grids.css,assets/css/admin_base.css,assets/css/ui-Aristo/jquery-ui.css,assets/css/form_add.css,assets/css/table.css" />
<script src="assets/js/sea.js" type="text/javascript" data-main="app/app"></script>
</head>
<body class="w866">
<div class="wrap" id="wrap">
<p class="loading-tips">加载中,请稍后,第一次加载可能需要时间稍长…</p>
</div>
</body>
</html>
复制代码
详细说明看这里:http://shepherdwind.com/?p=316
代码放github上:https://github.com/shepherdwind/peersay/ .gitignore中说明了那些类库就没有放在代码中了,包括Ckeditor,ci的system,php minfy和ci的两个配置文件
Demo: http://shepherdwind.com/peersay/ 用户名:被试1,密码:beishi1 (1-31都行,管理员界面就没得测试啦)
|
|