自定义验证规则

时间:2016-08-06 12:08:56

标签: php validation joomla components rule

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

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

com_mycomponent /模型/规则/ 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 /模型/形式/ 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()规则segment_name缺失。

1 个答案:

答案 0 :(得分:1)

有些规则未被遵循

  1. 您已将segment_name用作文件名,但您已将SegmentName指定为类名。两者都应匹配。

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

    <强> jimport( 'joomla.form.formrule');

    定义('_ JEXEC')或死('限制访问');

    //导入Joomla formrule库 jimport( 'joomla.form.formrule');

    / **

    • Joomla框架的表单规则类。 * / class JFormRuleSegment_rule扩展了JFormRule {
  3. 在您的表单中,应该像这样给出addrule路径
  4. exec customer_registrations 
      'insert', 
      @Customer_Name = 'dsad', 
      @Email         = 'test@test.com', 
      @Password      = 'pass', 
      @Mobile        = '9999900000';
    

    <form> <fieldset name="form_name" addrulepath="components/com_mycomponent/models/rules"> ----------------fields </fieldset> </form>应该是您的表单名称 classname(JFormRule [SUFFIX])的后缀必须与规则文件名相同。 https://docs.joomla.org/Server-side_form_validation