typecho插件编写教程(三):保存配置


Posted in PHP onMay 28, 2015

上一节我们制作了一个裸插件,下面我们开始让我们的插件开始工作!

I. 完善方法

两个方法

我们实现activate和deactivate方法

    public static function activate(){

        return 'activate';

    }
    public static function deactivate(){

        return 'deactivated';

    }

如上代码所示,我们在激活和卸载插件方法中有返回值,所以在相应操作时会有相应的提示。

typecho插件编写教程(三):保存配置

完善信息,使其更接地气

    public static function activate(){

        // do something

        return '插件安装成功,请进入设置填写准入密钥';

    }
    public static function deactivate(){

        // do something

        return '插件卸载成功';

    }

II. 如何保存配置

准入密钥在哪里保存?当然是数据库了。

typecho已经为我们实现了Typecho_Widget_Helper_Form类,我们只需要一点代码就可以摆脱需要自己写表单的烦恼了。

下图是表单类的继承关系,我们可以使用很多类型的表单来保存我们的选项。

下面我们在config方法中保存 接口调用地址,类似如下链接(你可以在百度站长平台的链接提交里找到)

接口调用地址:http://data.zz.baidu.com/urls?site=www.phpgao.com&token=5wK0QtGCzdRzufvW

    public static function config(Typecho_Widget_Helper_Form $form){

        //保存接口调用地址

        $element = new Typecho_Widget_Helper_Form_Element_Text('api', null, null, _t('接口调用地址'), '请登录百度站长平台获取');

        $form->addInput($element);

    }

初始化参数有5个,他们都是做什么的?

以下是表单基类的构造方法,他们的功能分别是表单输入项名称、选择项、表单默认值、表单标题、表单描述。

# var/Typecho/Widget/Helper/Form/Element.php:111
    /**

     * 构造函数

     *

     * @access public

     * @param string $name 表单输入项名称

     * @param array $options 选择项

     * @param mixed $value 表单默认值

     * @param string $label 表单标题

     * @param string $description 表单描述

     * @return void

     */

    public function __construct($name = NULL, array $options = NULL, $value = NULL, $label = NULL, $description = NULL)

# 以下省略

III. 使用需要注意的问题

修改表单名称($name)后需要重启插件才能工作,因为插件启用后,表单内容就持久化到数据库中了,禁用插件才能清空该插件的表单设置
Typecho_Widget_Helper_Form_Element_Fake 不用理会
由var/Widget/Plugins/Edit.php我们学到很多表单的高级用法,以后老高会在合适的时候提到。

PHP 相关文章推荐
PHP 开发工具
Dec 06 PHP
弄了个检测传输的参数是否为数字的Function
Dec 06 PHP
PHP实现用户认证及管理完全源码
Mar 11 PHP
解析zend studio中直接导入svn中的项目的方法步骤
Jun 21 PHP
PHP生成图片验证码、点击切换实例
Jun 25 PHP
什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释
Jul 01 PHP
Redis使用Eval多个键值自增的操作实例
Nov 04 PHP
Laravel框架实现redis集群的方法分析
Sep 14 PHP
浅谈PHP中如何实现Hook机制
Nov 14 PHP
swoole_process实现进程池的方法示例
Oct 29 PHP
PHP实现批量修改文件名的方法示例
Sep 18 PHP
php连接mysql数据库最简单的实现方法
Sep 24 PHP
PHP通过API获取手机号码归属地
May 28 #PHP
typecho插件编写教程(二):写一个新插件
May 28 #PHP
typecho插件编写教程(一):Hello World
May 28 #PHP
php实现的mongodb操作类
May 28 #PHP
PHP编译安装时常见错误解决办法
May 28 #PHP
PHP安装memcached扩展笔记
May 28 #PHP
PHP实现的增强性mhash函数
May 27 #PHP
You might like
php自动加载的两种实现方法
2010/06/21 PHP
php !function_exists("T7FC56270E7A70FA81A5935B72EACBE29"))代码解密
2011/01/07 PHP
php获取textarea的值并处理回车换行的方法
2014/10/20 PHP
php中mail函数发送邮件失败的解决方法
2014/12/24 PHP
JS图片切换的具体方法(带缩略图版)
2013/11/12 Javascript
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
getElementById().innerHTML与getElementById().value的区别
2016/10/27 Javascript
快速入门Vue
2016/12/19 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
Form表单上传文件(type="file")的使用
2017/08/03 Javascript
react开发教程之React 组件之间的通信方式
2017/08/12 Javascript
详解Vue微信公众号开发踩坑全记录
2017/08/21 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
2018/12/06 NodeJs
关于vue组件事件属性穿透详解
2019/10/28 Javascript
[02:53]2018年度DOTA2最佳战队-完美盛典
2018/12/17 DOTA
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
恢复百度云盘本地误删的文件脚本(简单方法)
2017/10/21 Python
Django中的文件的上传的几种方式
2018/07/23 Python
对Python多线程读写文件加锁的实例详解
2019/01/14 Python
python实现词法分析器
2019/01/31 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
简单了解python列表和元组的区别
2020/05/14 Python
HTML table 表格边框的实现思路
2019/10/12 HTML / CSS
HTML5 drag和drop具体使用详解
2021/01/18 HTML / CSS
丹尼尔惠灵顿手表天猫官方旗舰店:Daniel Wellington
2017/08/25 全球购物
DTD的含义以及作用
2014/01/26 面试题
社区党总支书记先进事迹材料
2014/01/24 职场文书
美容院考勤制度
2014/01/30 职场文书
安全责任书怎么写
2014/07/28 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
运动会开幕式致辞
2015/07/29 职场文书
MySQL笔记 —SQL运算符
2022/01/18 MySQL