既然选择了远方,便只顾风雨兼程~~~

smatry+fckeditor+quickform+xajax综合应用实例

上一篇 / 下一篇  2007-03-27 21:11:28

查看( 8057 ) / 评论( 50 )
回学校了一阵,许久没上论坛,在学校我也没闲着,今天发这个帖子就当这段时间的工作总结,现在框架的应用在企业级应用中极为普遍,在公司一直都使用框架开发,这里我就为广大初学框架开发的的朋友讲解下几种常用开源框架的应用实例,高手请直接飘过。在学校这几天时间做的小程序,虽然小,但是有一定代表性,先讲下企业级应用的一般目录结构。
通常在网站根目录下有这样几个文件夹
lib
conf
moudle
images
css
templates
templates_c
      ib文件夹存放各种开发框架,我的目录下就有cmarty,xajax,fckeditor,quickform,dbclass,page这几个框架和类库,conf文件夹存放一些配置文件,moudle目录下每一个文件夹为一个功能模块,通常在根目录下还要有个文件定义网站的全局配置,我的这个文件取名为common.inc.php,这里提一下,通常公司都会有自己的编码规范,例如配置文件都是取名xxx.cfg.php,类文件xxx.class.php,包含文件xxx.inc.php,这样方便他人阅读和维护,大家正式做程序时最好要养成规范编码这个习惯。
     好了,大家先建一个数据库叫pro,导入以下内容:

CODE:

CREATE TABLE `admin` (
  `adminname` varchar(100) NOT NULL,
  `password` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- 导出表中的数据 `admin`
--

INSERT INTO `admin` (`adminname`, `password`) VALUES ('admin', 'admin');

-- --------------------------------------------------------

--
-- 表的结构 `content`
--

CREATE TABLE `content` (
  `id` int(9) NOT NULL auto_increment,
  `title` varchar(100) default NULL,
  `content` text,
  `add_time` date default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=17 ;

--
-- 导出表中的数据 `content`
--

INSERT INTO `content` (`id`, `title`, `content`, `add_time`) VALUES (2, '哈哈哈', '<p>哈哈哈</p>', '2007-03-18'),
(9, '哈哈', '阿瑟', '2007-03-18'),
(11, '我是辉老大', '哈哈哈', '2007-03-18'),
(15, '辉辉', '哈哈哈', '2007-03-18'),
(16, '拉拉拉111', '小辉辉', '2007-03-18');
功能很简单,假设他是某OA的一部分,所以初始页面pro/module/login/login.php是一个登录界面,判断采用xajax,大家最好在站点根目录下作个index.html,链接到module/login/login.php,这样访问会方便些处理login.php的页面叫login.code.php,这两个页面就用到了smarty,quickform,和xajax,贴出代码大家看下,具体的大家可以下载源代码查看
[php]
<?php

/*
*作者:辉老大
*页面:login.php
*功能:登入
*/

$global['page']['name']='login';
$global['page']['folder']='login';

require_once('../../common.inc.php');//载入全局配置

//包含quickform类库
require($global['path']['lib'] . 'pear/HTML/QuickForm.php');

//包含xajax类库,并设置相应参数
$xajax = new xajax('login.code.php');//参数为处理xajax请求的页面
$xajax->registerFunction("app");

$form = new HTML_QuickForm('form1');//生成quickform实例,参数为表单名

/*
*开始添加表单元素
*参数依次为:表单元素类型,名称,(按钮标签文字),样式
*/
$form->addElement('text','username','','style="width:120px"');
$form->addElement('password','pwd','','style="width:120px"');
$form->addElement('submit','btnSubmit','登入','style="width:100px"');

//增加验证规则,自动生成JS
$form->addRule('username','用户名不能为空!','required','','client');
$form->addRule('pwd','密码不能为空!','required','','client');
$form->;//禁止提交表单,进行xajax处理

//分配表单数据到数组中
$tpl->assign('xajax_javascrīpt', $xajax->getJavascrīpt($global['path']['xajax']));
$tpl->assign('form_data',$form->toArray());
   
//显示模板
//var_dump($global['path']['lib']);
$tpl->display($global['page']['folder'].'/'.$global['page']['name'].'.tpl');


?>
[/php]
这里大家也许觉得为什么路径设成二维数组的形式,不设成常量,其实我个人喜欢常量,这是我公司的编码风格,这样其实也不错,很直观的表现它的路径。看下xajax处理的代码:
[php]
<?php
/*
*作者:辉老大
*页面:login.code.php
*功能:登录判断
*版权所有:随便copy^_^
*/

require('../../common.inc.php');//载入全局配置
$xajax = new xajax('login.code.php');
$xajax->registerFunction('app');

function app($formvalue){
    $response = new xajaxResponse();
    $db = new db;
    //$db->createcon();//调用创建连接函数
    $adminname = $formvalue['username'];
    $pwd       = $formvalue['pwd'];
    $sql = 'select * from admin where adminname = \'' . $adminname . '\' and password = \'' . $pwd . '\'';
    $rs  = $db->query($sql);
    $row = $db->loop_query($rs);
    if ($row) {
        $response->addAlert('登入成功!');
        $response->addscrīpt('window.location = "../index.php"');
    } else {
        $response->addassign("message","innerHTML",'<font color=red>用户名或密码错误!</font>');
    }
    return $response;
}

$xajax->processRequests();
?>
[/php]
提一点,这些框架的使用,大家自己可以去了解下,这里肯定不能解释了。在看下fck使用的代码,其他大家自己看源码^_^
[php]
<?php

/*
*作者:辉老大
*页面:addinfo.php
*功能:登入
*/

$global['page']['name']='addInfo';
$global['page']['folder']='info';

require_once('../../common.inc.php');//载入全局配置
//定义一个函数用于调用FCK
function editor($input_name, $input_value)
{
global $tpl;
$editor = new FCKeditor($input_name) ;
$editor->BasePath   = "../../lib/FCKeditor/";//指定编辑器路径

$editor->ToolbarSet = "Default";//编辑器工具栏有Basic(基本工具),Default(所有工具)选择
$editor->Width      = "100%";
$editor->Height     = "300";
$editor->Value      = $input_value;
$editor->Config['AutoDetectLanguage'] = true ;
$editor->Config['DefaultLanguage']  = 'en' ;//语言
$FCKeditor = $editor->CreateHtml();

$tpl->assign("editor", $FCKeditor);//指定区域
}

//包含quickform类库
require($global['path']['lib'] . 'pear/HTML/QuickForm.php');

$form = new HTML_QuickForm('form1','post','addInfo.code.php');//生成quickform实例,参数为表单名

/*
*开始添加表单元素
*参数依次为:表单元素类型,名称,(按钮标签文字),样式
*/
$db = new db;
$rs = $db->query('select * from content where id = ' . $_GET['id'] . '');
$row = $db->loop_query($rs);
$title = '';
if($row){
  editor("editor",$row['content']);
  $title = $row['title'];
} else {
  editor("editor","");
}

$form->setDefaults($row);
$form->addElement('text','title','','style="width:200px"');
$form->addElement('submit','btnSubmit','提交','style="width:60px"');
//$form->addElement('reset','btnReset','重置','style="width:60px"');
//增加验证规则,自动生成JS
$form->addRule('title','标题不能为空!','required','','client');

$tpl->assign('form_data',$form->toArray());
$tpl->assign('id',$_GET['id']);
   
//显示模板
//var_dump($global['path']['lib']);
$tpl->display($global['page']['folder'].'/'.$global['page']['name'].'.tpl');
?>
[/php]
也许大家有和我一样的感觉,企业级开发和自己平常做及教科书怎么差异这么大,是的,凡事都有个适应的过程只要大家打好基础就能很快适应企业开发的需要,成为优秀的phper,此外一个细节提一下,关于文件编码最好用utf8,数据库输入用utf8输出也用utf8,全部都一致可以有效避免乱码问题。由于写的时间参促,虽然只是简单实例,难免有许多不足,欢迎大家提出意见,最后还是看下效果图:

{2921FBF9-8B9A-4C80-ABE5-48B8C704BBD6}.jpg

{4498ADB2-8D23-4202-B382-60F5FFD79D02}.jpg

{E1ADBECC-FB8B-427B-87C0-8800F10CCC6F}.jpg

11111.JPG

22222.JPG

TAG:

辉老大的地盘 leehui1983 发布于2007-03-27 21:23:41
:L忘了给出源代码,说明下,本例子quickform是改过的,目的是更好兼容smarty,修改作者:志凡
用户名,密码都是admin

[ 本帖最后由 leehui1983 于 2007-3-28 22:18 编辑 ]

pro.rar
(2007-03-27 21:23:41, Size: 1.2 MB, Downloads: 4553)

志凡的个人空间 dzjzmj 发布于2007-03-27 21:36:44
小支持一下
淡定有思 lmhllr 发布于2007-03-27 21:58:05
大支持两下~~

深蓝神殿 renlang119 发布于2007-03-27 22:04:41
支持

两行
辉老大的地盘 leehui1983 发布于2007-03-27 22:07:43
L兄还是那么搞笑啊
PHPChina 我的成长之路 寶貝豬豬 发布于2007-03-27 22:17:15
UP
weiwei的个人空间 weiwei 发布于2007-03-27 22:18:52
leehui1983兄弟辛苦了
辉老大的地盘 leehui1983 发布于2007-03-27 22:23:55
ls客气了,不敢当啊
淡定有思 lmhllr 发布于2007-03-27 22:35:41

QUOTE:

原帖由 leehui1983 于 2007-3-27 22:07 发表
L兄还是那么搞笑啊
我没有吧??~~
辉老大的地盘 leehui1983 发布于2007-03-28 09:38:42
顶起:lol
reed2003发布于2007-03-28 10:06:21
不用这些新技术可以实现你要的功能吗?使用与不使用新技术区别在哪里呢?
辉老大的地盘 leehui1983 发布于2007-03-28 10:09:45
最大的区别在于系统易于维护和升级,小项目可以不用框架,但是大型项目肯定是需要的,别忘了,一个软件的生命周期80%在于维护,而不是开发
bg6aer的个人空间 bg6aer 发布于2007-03-28 11:30:29
支持一下  这样的帖子实在  厚道
bg6aer的个人空间 bg6aer 发布于2007-03-28 11:33:54
下载下来一解压缩杀毒软件就报警了  病毒 W32/HLLP.Philis.ini

杀了毒重新压缩了一下给大家

pro.rar
(2007-03-28 11:33:54, Size: 1.19 MB, Downloads: 386)

辉老大的地盘 leehui1983 发布于2007-03-28 12:05:02
看来最近我机器是中毒了:L
默默,PHP,MYSQL,LINUX,Javascript 默默 发布于2007-03-28 13:34:51
支持一下辉老大 呵呵
辉老大的地盘 leehui1983 发布于2007-03-28 14:40:34
默默都来支持啦,呵呵
hot的个人空间 hot 发布于2007-03-28 21:04:42
牛人坚决顶。
志凡的个人空间 dzjzmj 发布于2007-03-28 22:18:00
支持第二下
newbird的个人空间 newbird 发布于2007-03-31 20:38:36
不错呀,顶一下。
我来说两句

(可选)

Open Toolbar