【问题标题】:Joomla throwing error for custom validation ruleJoomla 为自定义验证规则抛出错误
【发布时间】:2016-12-12 17:58:52
【问题描述】:

我是 Joomla 的初学者并尝试开发组件,但是当我尝试向后端面板添加规则时,我不断收到此错误。如果有人能告诉我我做错了什么,将不胜感激。

这是我编写的规则的代码。

com_mycomponent/models/rules/segment_name.php

// No direct access to this file
defined('_JEXEC') or die('Restricted access');

/**
 * Form Rule class for the Joomla Framework.
 */
class JFormRuleSegmentName extends JFormRule
{
    /**
     * The regular expression.
     *
     * @access  protected
     * @var     string
     * @since   2.5
     */
    protected $regex = '^[^0-9]+$';
}

这是我的表单代码:

com_mycomponent/models/forms/segment.xml

<?xml version="1.0" encoding="utf-8"?>
<form addrulepath="/administrator/components/com_mycomponent/models/rules">
    <fieldset>
        <field
                name="id"
                type="hidden"
                />
        <field
                name="segment_name"
                type="text"
                label="COM_MYCOMPONENT_SEGMENT_NAME_LABEL"
                description="COM_MYCOMPONENT_SEGMENT_NAME_DESC"
                size="40"
                class="inputbox"
                validate="segment_name"
                required="true"
                default=""
                />
    </fieldset>
</form>

这对我不起作用,这是我尝试添加或编辑新段时得到的结果:

错误:

发生了错误。 0 JForm::validateField() 规则段名称缺失。

【问题讨论】:

标签: php validation joomla components rule


【解决方案1】:

有些规则没有遵守

  1. 您使用了segment_name 作为文件名,但您将SegmentName 作为类名。两者应该匹配。

  2. 不是强制性的,但您可以在规则文件中使用

    jimport('joomla.form.formrule');

    defined('_JEXEC') or die('Restricted access');

    // 导入 Joomla 表单规则库 jimport('joomla.form.formrule');

    /**

    • Joomla 框架的表单规则类。 */ 类 JFormRuleSegment_rule 扩展 JFormRule {
  3. 在您的表单中,应该像这样给出 addrule 路径

    <form>
        <fieldset name="form_name" addrulepath="components/com_mycomponent/models/rules">
     ----------------fields
        </fieldset>
    </form>

form_name 应该是您的表单名称 类名的后缀(JFormRule[SUFFIX])必须与规则文件名相同。 https://docs.joomla.org/Server-side_form_validation

【讨论】:

  • 如果不是下划线,是否有分隔规则名称的两个单词的分隔符?我也尝试保留类的名称 Sagment_Name,但它也没有工作:-(
猜你喜欢
  • 1970-01-01
  • 2016-05-01
  • 2016-10-21
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 2017-07-25
  • 2015-09-07
  • 1970-01-01
相关资源
最近更新 更多