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 相关文章推荐
第十节 抽象方法和抽象类 [10]
Oct 09 PHP
PHP的开合式多级菜单程序
Oct 09 PHP
PHP 万年历实现代码
Oct 18 PHP
深入array multisort排序原理的详解
Jun 18 PHP
wordpress自定义url参数实现路由功能的代码示例
Nov 28 PHP
自己写了一个php检测文件编码的函数
Apr 21 PHP
浅谈php安全性需要注意的几点事项
Jul 17 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
Sep 29 PHP
php去除html标记的原生函数详解
Jan 27 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
Aug 12 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
PHP PDOStatement::nextRowset讲解
Feb 01 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调用Java对象的方法
2006/10/09 PHP
PHP4实际应用经验篇(6)
2006/10/09 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
2018/10/24 PHP
由浅到深了解JavaScript类
2006/09/08 Javascript
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
2010/03/27 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
JS控制日期显示的小例子
2013/11/23 Javascript
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
jQuery中JSONP的两种实现方式详解
2016/09/26 Javascript
JavaScript函数基础详解
2017/02/03 Javascript
jQuery获取Table某列的值(推荐)
2017/03/03 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
2017/07/09 Javascript
BootStrap Fileinput上传插件使用实例代码
2017/07/28 Javascript
ES6新增的math,Number方法
2017/08/06 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
2018/03/01 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
python抓取网页时字符集转换问题处理方案分享
2014/06/19 Python
python使用paramiko实现远程拷贝文件的方法
2016/04/18 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
python计算无向图节点度的实例代码
2019/11/22 Python
Python中os模块功能与用法详解
2020/02/26 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
python实现图片,视频人脸识别(dlib版)
2020/11/18 Python
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
幼儿园大班开学教师寄语
2014/04/03 职场文书
甜品蛋糕店创业计划书
2014/09/21 职场文书
个人查摆问题整改措施
2014/10/04 职场文书
班主任先进事迹材料
2014/12/17 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
MySQL中LAG()函数和LEAD()函数的使用
2022/08/14 MySQL