ihymk 发表于 2010-9-16 11:52:36

基于NAble CMS的快速开发例子,简易blog (一)

本帖最后由 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(我不会做太深,点到即止)。

首先我们要确定数据库表结构:


--- 帖子列表

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。


/**
* 博客日志表
* @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 里面,可以看一下,功能有些乱,慢慢整理。

接下来写控制器:

/*
* 博客类型控制器
* @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下添加这几个模板文件:

<!-- 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>
    <tdcolspan="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
页: [1]
查看完整版本: 基于NAble CMS的快速开发例子,简易blog (一)