自定义验证规则的 Joomla 抛出错误

Joomla throwing error for custom validation rule

我是 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>

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

错误:

An error has occurred. 0 JForm::validateField() rule segment_name missing.

有些规则没有遵守

  1. 您已使用 segment_name 作为文件名,但您将 SegmentName 指定为 class 名称。两者应该匹配。

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

    jimport('joomla.form.formrule');

    定义('_JEXEC')或死亡('Restricted access');

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

    /**

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

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

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