用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3913|回复: 0
收起左侧

[程序 App] 基于NAble CMS的快速开发例子,简易blog (一)

[复制链接]
发表于 2010-9-16 11:52:36 | 显示全部楼层 |阅读模式
本帖最后由 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

本版积分规则