Typecho 文档:给主题或插件表单新增 addRule 验证规则

11月15日

适用程序:Typecho
程序版本:1.2.1
文档作者:Lopwon
作者博客:Lopwon.com
发布页面:Lopwon.com/attachment/3842/
许可方式:CC BY-NC-SA

注意:此文档源于作者在博客改造中的一些经验总结,转载还请署名。

敬告:此文档操作涉及程序核心文件的修改,作者不对你在使用中产生的任何问题造成的不良后果,承担责任。

文档说明

原本以为 Typecho 内置的 addRule 验证规则仅限于文件 var/Typecho/Validate.php 中已定义的常用的验证类,无意中瞥见 var/Widget/Metas/Tag/Edit.php 文件,才意识到 addRule 可以通过自定义验证规则的方式,快捷的引用新增的验证规则。这也就完美解决了之前在制作 Lopwon DivLopwon Json 插件时,遇到的:只能修改文件 Validate.php 达到验证输入值必须大于指定值的需求。


关键代码
1. 插件 Plugin.php 直接输出表单:

    $form->addInput($var);

2. 插件 Plugin.php 使用内置的验证类(如 xssCheck)输出表单:

    $form->addInput($var->addRule('xssCheck', _t('请勿使用特殊字符')));

3. 插件 Plugin.php 使用自定义验证规则(如 minValue)输出表单:

    // 新增验证规则 minValue
    public static function minValue($value) {
        return $value > 3;  // 判断输入值是否大于 3
    }

    // 引入验证规则 minValue
    $form->addInput($var->addRule(['PluginFolderName_Plugin', 'minValue'], _t('请输入大于 3 的数值'))); // 方式一,请将 PluginFolderName 替换为插件的文件夹名称
    // $form->addInput($var->addRule([self::class, 'minValue'], _t('请输入大于 3 的数值'))); // 方式二

至此,在不修改文件 Validate.php 的前提下,也能快捷的引用新增的验证规则,理论上也适用于主题设置的表单验证。
store