我是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缺失。
答案 0 :(得分:1)
有些规则未被遵循
您已将segment_name用作文件名,但您已将SegmentName指定为类名。两者都应匹配。
不是强制性的,但您可以在规则文件中使用
<强> jimport( 'joomla.form.formrule'); 强>
定义('_ JEXEC')或死('限制访问');
//导入Joomla formrule库 jimport( 'joomla.form.formrule');
/ **
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