|
本帖最后由 ihymk 于 2010-9-16 12:07 编辑
话说,NAble CMS更新有几版了,期间一直没有公开使用教程一类, 大家对NAble CMS理解可能认为只是一个内容管理系统。
额,其实,我的初衷不是这样的。。
做NAble的出发点,我是想实现一个便于快速开发、对复杂业务逻辑灵活吞吐!挺考验设计模式应用的掌握了,大家先别忙骂业务逻辑万变谁做的出来?变化总是有规则的,在于摸索,所以NAble需要成长过程。
NAble昨晚(应该说是今早)更新了第0.1 beta2版,这版已经和第一版的代码规则有大的变化,以beta2命名,也是怕版本号涨的太快,必定没有大的功能变化。
更新细节参见论坛页:http://codeigniter.org.cn/forums/thread-6315-1-1.html
好了,先不说其他,看看这一版实现的快速功能开发有哪些东西,这些东西大伙可能已经很熟悉了,我这里就是拿过来用一下,给还不了解这种使用方法的人。
几分钟的新模块添加,例子中,我们快速开发一个简易blog(我不会做太深,点到即止)。
首先我们要确定数据库表结构:
SQL复制代码
--- 帖子列表
CREATE TABLE IF NOT EXISTS `ea_blog` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`title` VARCHAR(100) NOT NULL COMMENT '标题',
`author` VARCHAR(10) NOT NULL COMMENT '作者',
`log` text NOT NULL COMMENT '内容',
`create_time` INT(10) NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `create_time` (`create_time`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='帖子列表' AUTO_INCREMENT=1 ;
复制代码
标题,作者, 正文内容,创建世间,,, 挺少的,举例够用了,下面创建MODEL。
PHP复制代码
/**
* 博客日志表
* @file app/models/blogs_model.php
*/
class Blogs_Model extends EA_Model
{
var $TableName = 'blog';
public $pk = 'id';
public function __construct()
{
parent::__construct();
}
}
复制代码
够了,就这几行代码, 其他的代码全在 EA_Model 里面,可以看一下,功能有些乱,慢慢整理。
接下来写控制器:
PHP复制代码
/*
* 博客类型控制器
* @file app/controllers/admin/blogs.php
*/
class Blogs extends Admin_Controller
{
#应用的模板
protected $tpl = array('index'=>array('admin/blogs/index',true),
'edit' =>array('admin/blogs/edit',true),
'add' =>array('admin/blogs/add',true));
#默认模型
protected $defaultModel = 'Blogs_Model';
#php5的类继承
public function __construct ()
{
//指定默认模块
parent ::__construct ();
}
}
复制代码
额,代码也就这么多吧,$tpl为模板列表,分别匹配列表,添加,修改,三项。详细可以分析 EA_Controller控制器下的Admin_Controller,目前我们制作应用。
接下来写页面了。说实话,我下一步计划是实现html部分的自生成, 这样通用性大的东西可以快速应用。现在只能手写了先。
view下添加这几个模板文件:
HTML复制代码
<!-- views/admin/blogs/index.php -->
<table border=0 cellpadding=0 cellspacing=1 class="table" width=100% >
<tr>
<th width="30">编号 </th>
<th >标题 </th>
<th>作者 </th>
<th>发布时间 </th>
<th>操作 </th>
</tr>
<?php foreach($list->result() as $row):
?>
<tr class="tr_bg" >
<td><?php echo $row->id ?> </td>
<td><?php echo $row->title ?> </td>
<td><?php echo $row->author?> </td>
<td><?php echo date('Y-m-d H:i:s',$row->create_time)?> </td>
<td>
<?php echo anchor(ADMIN_ROUTES.'/blogs/edit/'.$row->id,'修改')?>
<?php echo anchor(ADMIN_ROUTES.'/blogs/delete'.$row->id,'删除')?>
</td>
</tr>
<?php endforeach; ?>
</table>
<?php $this->load->view("admin/page");?>
<!-- file views/admin/blogs/add.php -->
<!-- form 提交操作处理 -->
<form method="POST" action=""/blogs/edit/")?>/'+conf['insert_id'];
}
}
},'mess');
return false;
}catch(e){return false}">
<table border=0 cellpadding=0 cellspacing=1 class="table" width=100% >
<tr >
<th colspan="4">添加信息 </th>
</tr>
<tr class="tr_bg" >
<td>名称 </td>
<td>
<input type="text" name="title" value="">
</td>
</tr>
<tr class="tr_bg">
<td>作者 </td>
<td><input type="text" name="author" value=""></td>
</tr>
<tr class="tr_bg">
<td>内容 </td>
<td colspan="3"><textarea name="log" ></textarea>
</td>
</tr>
<tr class="tr_bg">
<td></td>
<td colspan="3"><input type="submit" value="保存"><span style="display:none;" id="mess"></span></td>
</tr>
</table>
</form>
<!-- form 提交操作处理 -->
<!-- file views/admin/blogs/edit.php -->
<form method="POST" action="">
<table border=0 cellpadding=0 cellspacing=1 class="table" width=100% >
<tr>
<th colspan="4">修改信息 </th>
</tr>
<tr class="tr_bg" >
<td>名称 </td>
<td><input type="text" name="title" value="<?php echo $info->title?>"> </td>
</tr>
<tr class="tr_bg" >
<td>作者 </td>
<td><input type="text" name="author" value="<?php echo $info->author?>"> </td>
</tr>
<tr class="tr_bg">
<td>内容 </td>
<td colspan="3"><textarea name="log" ><?php echo $info->log?> </textarea>
</td>
</tr>
<tr class="tr_bg">
<td></td>
<td><input type="submit" value="保存"><input type="hidden" name="id" value="<?php echo $info->id?>" > <span id="mess" style="display:none;"></span></td>
</tr>
</table>
</form>
复制代码
这个标准化界面,自动生成是势在必行。这里先凑合理解一下。
然后看几个测试地址:
类表页面:http://localhost/nablecms/index.php/admin/blogs
添加页面:http://localhost/nablecms/index.php/admin/blogs/add |
|