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截取中文字符串的问题
Jul 12 PHP
require(),include(),require_once()和include_once()的异同
Jan 02 PHP
PHP XML error parsing SOAP payload on line 1
Jun 17 PHP
PHP Undefined index报错的修复方法
Jul 17 PHP
Apache服务器无法使用的解决方法
May 08 PHP
PHP实现获取域名的方法小结
Nov 05 PHP
ci检测是ajax还是页面post提交数据的方法
Nov 10 PHP
Yii学习总结之安装配置
Feb 22 PHP
Symfony查询方法实例小结
Jun 28 PHP
PHP封装的验证码工具类定义与用法示例
Aug 22 PHP
如何在Laravel5.8中正确地应用Repository设计模式
Nov 26 PHP
PHP实现获取文件mime类型多种方法解析
May 28 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快递单号查询接口使用示例
2014/05/05 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
YII模块实现绑定二级域名的方法
2014/07/09 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
JS随即打乱数组实现代码
2012/12/03 Javascript
jQuery实现id模糊查询的小例子
2013/03/19 Javascript
JavaScript中的getTime()方法使用详解
2015/06/10 Javascript
JS基于VML技术实现的五角星礼花效果代码
2015/10/26 Javascript
微信小程序 网络请求(GET请求)详解
2016/11/16 Javascript
js微信扫描二维码登录网站技术原理
2016/12/01 Javascript
利用Js+Css实现折纸动态导航效果实例源码
2017/01/25 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
2018/09/07 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
js实现中文实时时钟
2020/01/15 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
给Python入门者的一些编程建议
2015/06/15 Python
python pandas 对时间序列文件处理的实例
2018/06/22 Python
计算机二级python学习教程(1) 教大家如何学习python
2019/05/16 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
python实现截取屏幕保存文件,删除N天前截图的例子
2019/08/27 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
django中瀑布流写法实例代码
2019/10/14 Python
python re模块常见用法例举
2021/03/01 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
h5移动端调用支付宝、微信支付的实现
2020/06/08 HTML / CSS
测绘工程专业个人自我评价
2013/12/01 职场文书
立志成才演讲稿
2014/09/04 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
2015年法务工作总结范文
2015/05/23 职场文书
小学生暑假生活总结
2015/07/13 职场文书