自定义验证规则的 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.
有些规则没有遵守
您已使用 segment_name 作为文件名,但您将 SegmentName 指定为 class 名称。两者应该匹配。
不是强制性的,但您可以在规则文件中使用
jimport('joomla.form.formrule');
定义('_JEXEC')或死亡('Restricted access');
// 导入 Joomla 表单规则库
jimport('joomla.form.formrule');
/**
- Joomla 框架的表单规则class。
*/
class JFormRuleSegment_rule 扩展 JFormRule
{
- 在你的表单中,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
我是 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.
有些规则没有遵守
您已使用 segment_name 作为文件名,但您将 SegmentName 指定为 class 名称。两者应该匹配。
不是强制性的,但您可以在规则文件中使用
jimport('joomla.form.formrule');
定义('_JEXEC')或死亡('Restricted access');
// 导入 Joomla 表单规则库 jimport('joomla.form.formrule');
/**
- Joomla 框架的表单规则class。 */ class JFormRuleSegment_rule 扩展 JFormRule {
- 在你的表单中,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