QeePHP基础教学-建置留言簿

2008-04-12 15:12:52 / 个人分类:教程

大家好,认识一下大家吧!其实我是新来的作者^_^
首先要说的是,因为我是台湾人,所以如果用词无法理解请一定要跟我说,我会改进。当然现在直接进入正题──建置留言簿。这个例子采用《[转]使用FleaPHP框架构建简单留言本应用》做为基础,然后改由QeePHP完成任务。
2008-03-23: 修改Controller以及Model部分。

先看看结果吧:
结果

1.建立应用程序

请参考《《开始创建 QeePHP 应用程序》系列文章》建立一个新的应用程序。
其中命令行执行的内容如下:

\qeephp\scrīpts\chili.bat 应用程序名称

 

2.建立数据表

执行SQL语法:

CREATE TABLE IF NOT EXISTS `guestbooks` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `nickname` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `website` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `content` text COLLATE utf8_unicode_ci NOT NULL,
  `created` int(10) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=16;

 

3.建立配置文件

我们修改\config\environments\database.yaml.php里面的「devel模式」数据库连接信息。
如果之后无法加载QeePHP的话,请修改\config\environments\database.yaml.php里面的QeePHP位置。

4.建立控制器(controller)

控制器我们无须建立,使用默认即可。
我们在\app\controller\default_controller.php输入以下代码

<?php

class Controller_Default extends QController_Abstract {
    
/**
     * Constructor
     */

    function __construct() {
        parent::__construct(MyApp::instanc());
// 这里我不知道有没有更好的写法。

    }

    
/**
     * Index
     */

    protected function actionIndex() {
        $this->view = array(
            'guestbook' => Guestbook::find()->all()->order("id DESC")->asArray()->query()
        
// 此为QeePHP的贯串接口,開啟尋找->全部->排序->陣列處理->查询输出。

        );
    }

    
/**
     * Create
     */

    protected function actionCreate() {
        $create = new Guestbook();
        $create->nickname = htmlspecialchars($this->request->nickname);
        $create->email = htmlspecialchars($this->request->email);
        $create->website = htmlspecialchars($this->request->website);
        $create->content = htmlspecialchars($this->request->content);
        $create->save();
        return new QResponse_Redirect($this->url->make());
// 立刻返回本页的留言列表。

    }

?>

 

5.建立模型(model)

建立一个档案:\app\model\guestbook.php。
内容如下:

class Guestbook extends QDB_ActiveRecord_Abstract {
    /**
     * 返回对象的定义
     *
     * @static
     *
     * @return array
     */
    static function __define() {
        return array(
            // 指定该 ActiveRecord 要使用的行为插件
            'behavīors' => '',

            // 用什么数据表保存对象
            'table_name' => 'guestbook',

            // 指定数据表记录字段与对象属性之间的映射关系
            // 没有在此处指定的字段,QeePHP 会自动设置将字段映射为对象的可读写属性
            'fields' => array(
                // 主键应该是只读,确保领域对象的“不变量”
                'id' => array('readonly' => true),
                // 对象创建时间应该是只读
                'created' => array('readonly' => true),
            ),
        );
    }

    /**
     * 开启一个查询,查找符合条件的对象或对象集合
     *
     * @static
     *
     * @return QDB_ActiveRecord_Select
     */
    static function find() {
        $args = func_get_args();
        return parent::__find(__CLASS__, $args);
    }

    /**
     * 实例化所有符合条件的对象,并调用这些对象的 destroy() 方法,返回成功删除的对象的数量
     *
     * @static
     *
     * @param mixed $where
     *
     * @return int
     */
    static function destroyWhere() {
        $args = func_get_args();
        return parent::__destroyWhere(__CLASS__, $args);
    }

    /**
     * 对数据进行验证,返回所有未通过验证数据的名称错误信息
     *
     * @param array $data
     * @param array|string $fields
     *
     * @return array
     */
    static function validate(array $data, $props = null) {
        return parent::__validate(__CLASS__, $data, $props);
    }
}

 

这么Easy?没错,QeePHP帮我们把大量繁琐的事物处理好了。

6.建立视图(view)

视图放在\app\view\default\index.php,其中default为控制器名称,index为动作名称。

<h1>::Guestbook::</h1>
    <div id="messageList">
        <h2>Message List</h2>
        <?php foreach($guestbook as $data) {?>
        <div class="content">
            <div>
                <span class="nickname">Nickname:
                <?php echo $data['nickname']; ?></span>
                 [ <?php echo date("Y-m-d", $data['created']); ?> ] |
                <a href="<?php echo $data['email']; ?>">E-mail</a> |
                <a href="<?php echo $data['website']; ?>">Website</a>
            </div>
            <div><?php echo $data['content']; ?></div>
        </div>
        <?php } ?>
    </div>
    <div id="postForm">
        <h2>Leave a message</h2>
        <form id="guestbook" action="<?php echo $this->url->make(null, 'Create'); ?>" method="post" onsubmit="return checkForm()">
            <p><label for="nickname">Nickname</label><input id="nickname" name="nickname" type="text" size="20" /></p>
            <p><label for="email">E-mail</label><input id="email" name="email" type="text" size="20" /></p>
            <p><label for="website">Website</label><input id="website" name="website" type="text" size="20" /></p>
            <p><textarea id="content" name="content" rows="10" cols="65"></textarea></p>
            <p><input type="submit" value="Submit" /></p>
        </form>
    </div>

 

7.建立模板(layout)

再来建立模板:\app\view\_layouts\default_layout.php,将下面的样式写在default_layout.php。
CSS

7.建立模板(layout)
再来建立模板:\app\view\_layouts\default_layout.php,将下面的样式写在default_layout.php。
CSS:

 

如果使用IE7以下(不含IE7),请引入下面这个Javascrīpt:

http://ie7-js.googlecode.com/svn/version/2.0(beta3)/IE8.js

 

这么一来我们简单的留言簿就完成了,QeePHP帮我们省下许多的时间,让我们更加的注意应用程序的功能。
注意:其中IE会引入IE8.js来修正排版错误。

 


原文地址:http://qeeify.com/index.php/2008/03/22/qeephp-tutoeais-guestbook.html

更多信息,请访问 FleaPHP/QeePHP 开源开发框架官方网站:http://www.fleaphp.org/


TAG: 教程

bush的个人空间 bush 发布于2008-05-20 10:08:58
不错  支持
radision的个人空间 radision 发布于2008-04-15 17:09:29
不错的例子!
chinafu-quain发布于2008-04-15 17:03:39
不错的资料~呵呵~
stuv796发布于2008-04-15 00:49:21
翻译公司来支持您!
翻译公司,北京译邦达 翻译公司是经北京工商行政管理局注册登记的专业 上海翻译公司,做为专业的翻译公司我们为您提供母语风格的中外、外外互译翻译、陪同口译翻译、交替口译
      翻译,翻译公司,北京 翻译公司,新语丝翻译公司成立于1999年,8年的运作经历使新语丝拥有雄厚的翻译力量和工作经验。
      北京通联汇金 翻译公司,作为北京最专业的翻译公司之一。拥有朝阳区翻译公司和海淀区翻译公司两个分部,可提供快速高质的商务翻译和专业小语种翻译服务。
      北京奥体汇友翻译公司为专业 翻译公司,翻译领域最为专业的翻译公司之一。本翻译公司专家老外执笔.提供快速高质的商务翻译及专业小语种翻译。
Open Toolbar