做后台的每开发一个系统都得和表单打交道,写得多了,重复性的劳动会让人感觉的厌烦。下面就给大家介绍一下phpcms是怎么处理这些烦人的表单的。
在phpcms的lib目录下的classes文件夹下有一个form.class.php文件,这个就是form表单类。打开一个,将近400行的代码,真是晃眼球啊。但是 如果你明白原理的话,就会知道大部分的代码都是拼接字符串。如果我们不需要很多配置的话,那么一个表单我们可以写一个方法,然后方法里面返回html表单代码就行了。但是这样做事不灵活的,不可配置的。所以我们需要一个灵活性高的表单类,简化我们以后的工作,这样做的代价就是配置项增多,拼接字符串、判断代码增多,这是不可避免的。所以看这个类的源码这么复杂,你就应该知道他是多么灵活,学会之后你就偷笑吧。
在这里代码我就不贴了,自己用notepad++打开对照着看吧。我们从上到下一个一个介绍其里面的方法和用法。
editor方法
这个方法是用来调用输出一个编辑器的。
public static function editor($textareaid = ‘content’, $toolbar = ‘basic’, $module = ”, $catid = ”, $color = ”, $allowupload = 0, $allowbrowser = 1,$alowuploadexts = ”,$height = 200,$disabled_page = 0, $allowuploadnum = ’10′) {//代码}
他有10个可配置参数。多吗?确实很多。看代码也很复杂。所以我建议你在看这些参数的意思之前先应该去看看ckeditor配置,这个才是editor方法的原理性的东西。
好了,假定你已经把上面的配置文档看完了,也明白了ckeditor的配置方法,那么下面你就应该知道,这个方法其实就是ckeditor配置字符串的拼接。上面的10个参数都是ckeditor的配置项,这个方法通过你传入的10个参数来配置好ckeditor,然后就返回配置好的js字符串。你把它输出到页面上配合textarea表单就可以生成一个编辑器了。
* @param int $textareaid:这是你页面上textarea表单的name值。ckeditor也就是通过这个值来识别你的textarea的。
* @param int $toolbar :用来配置你的编辑器的功能项。如果是basic,那么就会生成基础的编辑器,功能很少。如果是full,就会生成一个功能项很全的编辑器。
* @param string $module 模块名称:你的模块名称。为什么会有这个?ckeditor里面有一个上传组件,需要你的上传地址。
* @param int $catid 栏目id:同上
* @param int $color 编辑器颜色:不解释
* @param boole $allowupload 是否允许上传:不解释
* @param boole $allowbrowser 是否允许浏览文件:不解释
* @param string $alowuploadexts 允许上传类型:不解释
* @param string $height 编辑器高度:不解释
* @param string $disabled_page 是否禁用分页和子标题:不解释
看例子:
建立一个test模块,一个index控制器,一个init方法,在这个index文件中引入form表单类,写入一下代码:
<?php
defined(‘IN_PHPCMS’) or exit(‘No permission resources.’);
pc_base::load_app_class(‘admin’,’admin’,0);
pc_base::load_sys_class(‘form’, ”, 0);
class index extends admin {
function __construct() {
parent::__construct();
}
function init(){
echo “<textarea rows=\”30\” cols=\”50\” name=\”content\”>请输入.</textarea>”;
echo form::editor(‘content’,’full’,’tieba’);
}
}
?>
这样一个丰富的文本编辑器就展现在后台了,看结果:
![](http://imgsrc.baidu.com/forum/w%3D580/sign=e1534acac45c1038247ececa8210931c/076d8b10b912c8fccbcdbc1dfe039245d788210e.jpg)
如果你的只是显示一个文本框,请检查你的ckeditor路径是否正确。
images方法
<?php
defined(‘IN_PHPCMS’) or exit(‘No permission resources.’);
pc_base::load_app_class(‘admin’,’admin’,0);
pc_base::load_sys_class(‘form’, ”, 0);
class index extends admin {
function __construct() {
parent::__construct();
}
function init(){
echo form::images(“test”);
}
}
?>
看结果:
![](http://imgsrc.baidu.com/forum/w%3D580/sign=3c29b9bc123853438ccf8729a312b01f/32f67512c8fcc3cecafe83e39045d688d53f200e.jpg)
date方法
<?php
defined(‘IN_PHPCMS’) or exit(‘No permission resources.’);
pc_base::load_app_class(‘admin’,’admin’,0);
pc_base::load_sys_class(‘form’, ”, 0);
class index extends admin {
function __construct() {
parent::__construct();
}
function init(){
echo form::date(“test”);
}
}
?>
看结果:
![](http://imgsrc.baidu.com/forum/w%3D580/sign=cc5f6fd85143fbf2c52ca62b807fca1e/ccf404fcc3cec3fdf600eda5d488d43f8694270e.jpg)
栏目选择方法:select_category
<?php
defined(‘IN_PHPCMS’) or exit(‘No permission resources.’);
pc_base::load_app_class(‘admin’,’admin’,0);
pc_base::load_sys_class(‘form’, ”, 0);
class index extends admin {
function __construct() {
parent::__construct();
}
function init(){
echo form::select_category();
}
}
?>
看结果:
![](http://imgsrc.baidu.com/forum/w%3D580/sign=1b3b2ca3f9f2b211e42e8546fa816511/bd1a0fcec3fdfc039946a968d63f8794a5c2260e.jpg)
checkcode验证码方法
<?php
defined(‘IN_PHPCMS’) or exit(‘No permission resources.’);
pc_base::load_app_class(‘admin’,’admin’,0);
pc_base::load_sys_class(‘form’, ”, 0);
class index extends admin {
function __construct() {
parent::__construct();
}
function init(){
echo form::checkcode();
}
}
?>
看结果:
![](http://imgsrc.baidu.com/forum/w%3D580/sign=5f408412b0119313c743ffb855390c10/b6280ffdfc039245da8babdf8594a4c27c1e250e.jpg)
其他的方法都是差不多的,大家可以一一尝试一下。
上面的代码写得有点简单,省略的很多步骤。建议在看这个之前要有phpcms mvc的基础,模块安装的基础和控制器写法的基础。
在phpcms的lib目录下的classes文件夹下有一个form.class.php文件,这个就是form表单类。打开一个,将近400行的代码,真是晃眼球啊。但是 如果你明白原理的话,就会知道大部分的代码都是拼接字符串。如果我们不需要很多配置的话,那么一个表单我们可以写一个方法,然后方法里面返回html表单代码就行了。但是这样做事不灵活的,不可配置的。所以我们需要一个灵活性高的表单类,简化我们以后的工作,这样做的代价就是配置项增多,拼接字符串、判断代码增多,这是不可避免的。所以看这个类的源码这么复杂,你就应该知道他是多么灵活,学会之后你就偷笑吧。
在这里代码我就不贴了,自己用notepad++打开对照着看吧。我们从上到下一个一个介绍其里面的方法和用法。
editor方法
这个方法是用来调用输出一个编辑器的。
public static function editor($textareaid = ‘content’, $toolbar = ‘basic’, $module = ”, $catid = ”, $color = ”, $allowupload = 0, $allowbrowser = 1,$alowuploadexts = ”,$height = 200,$disabled_page = 0, $allowuploadnum = ’10′) {//代码}
他有10个可配置参数。多吗?确实很多。看代码也很复杂。所以我建议你在看这些参数的意思之前先应该去看看ckeditor配置,这个才是editor方法的原理性的东西。
好了,假定你已经把上面的配置文档看完了,也明白了ckeditor的配置方法,那么下面你就应该知道,这个方法其实就是ckeditor配置字符串的拼接。上面的10个参数都是ckeditor的配置项,这个方法通过你传入的10个参数来配置好ckeditor,然后就返回配置好的js字符串。你把它输出到页面上配合textarea表单就可以生成一个编辑器了。
* @param int $textareaid:这是你页面上textarea表单的name值。ckeditor也就是通过这个值来识别你的textarea的。
* @param int $toolbar :用来配置你的编辑器的功能项。如果是basic,那么就会生成基础的编辑器,功能很少。如果是full,就会生成一个功能项很全的编辑器。
* @param string $module 模块名称:你的模块名称。为什么会有这个?ckeditor里面有一个上传组件,需要你的上传地址。
* @param int $catid 栏目id:同上
* @param int $color 编辑器颜色:不解释
* @param boole $allowupload 是否允许上传:不解释
* @param boole $allowbrowser 是否允许浏览文件:不解释
* @param string $alowuploadexts 允许上传类型:不解释
* @param string $height 编辑器高度:不解释
* @param string $disabled_page 是否禁用分页和子标题:不解释
看例子:
建立一个test模块,一个index控制器,一个init方法,在这个index文件中引入form表单类,写入一下代码:
<?php
defined(‘IN_PHPCMS’) or exit(‘No permission resources.’);
pc_base::load_app_class(‘admin’,’admin’,0);
pc_base::load_sys_class(‘form’, ”, 0);
class index extends admin {
function __construct() {
parent::__construct();
}
function init(){
echo “<textarea rows=\”30\” cols=\”50\” name=\”content\”>请输入.</textarea>”;
echo form::editor(‘content’,’full’,’tieba’);
}
}
?>
这样一个丰富的文本编辑器就展现在后台了,看结果:
![](http://imgsrc.baidu.com/forum/w%3D580/sign=e1534acac45c1038247ececa8210931c/076d8b10b912c8fccbcdbc1dfe039245d788210e.jpg)
如果你的只是显示一个文本框,请检查你的ckeditor路径是否正确。
images方法
<?php
defined(‘IN_PHPCMS’) or exit(‘No permission resources.’);
pc_base::load_app_class(‘admin’,’admin’,0);
pc_base::load_sys_class(‘form’, ”, 0);
class index extends admin {
function __construct() {
parent::__construct();
}
function init(){
echo form::images(“test”);
}
}
?>
看结果:
![](http://imgsrc.baidu.com/forum/w%3D580/sign=3c29b9bc123853438ccf8729a312b01f/32f67512c8fcc3cecafe83e39045d688d53f200e.jpg)
date方法
<?php
defined(‘IN_PHPCMS’) or exit(‘No permission resources.’);
pc_base::load_app_class(‘admin’,’admin’,0);
pc_base::load_sys_class(‘form’, ”, 0);
class index extends admin {
function __construct() {
parent::__construct();
}
function init(){
echo form::date(“test”);
}
}
?>
看结果:
![](http://imgsrc.baidu.com/forum/w%3D580/sign=cc5f6fd85143fbf2c52ca62b807fca1e/ccf404fcc3cec3fdf600eda5d488d43f8694270e.jpg)
栏目选择方法:select_category
<?php
defined(‘IN_PHPCMS’) or exit(‘No permission resources.’);
pc_base::load_app_class(‘admin’,’admin’,0);
pc_base::load_sys_class(‘form’, ”, 0);
class index extends admin {
function __construct() {
parent::__construct();
}
function init(){
echo form::select_category();
}
}
?>
看结果:
![](http://imgsrc.baidu.com/forum/w%3D580/sign=1b3b2ca3f9f2b211e42e8546fa816511/bd1a0fcec3fdfc039946a968d63f8794a5c2260e.jpg)
checkcode验证码方法
<?php
defined(‘IN_PHPCMS’) or exit(‘No permission resources.’);
pc_base::load_app_class(‘admin’,’admin’,0);
pc_base::load_sys_class(‘form’, ”, 0);
class index extends admin {
function __construct() {
parent::__construct();
}
function init(){
echo form::checkcode();
}
}
?>
看结果:
![](http://imgsrc.baidu.com/forum/w%3D580/sign=5f408412b0119313c743ffb855390c10/b6280ffdfc039245da8babdf8594a4c27c1e250e.jpg)
其他的方法都是差不多的,大家可以一一尝试一下。
上面的代码写得有点简单,省略的很多步骤。建议在看这个之前要有phpcms mvc的基础,模块安装的基础和控制器写法的基础。