2016-08-06 4 views
0

Я начинаю работать с Joomla и пытаюсь разработать компонент, но когда я пытаюсь добавить правила на свою внутреннюю панель, я продолжаю получать эту ошибку. Если кто-нибудь скажет мне, что я делаю неправильно, буду признателен.Ошибка ввода 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> 

Это не работает для меня, это то, что я получаю, когда пытаюсь добавить или отредактировать новый сегмент:

Ошибка:

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

+0

проверить это http://joomla.stackexchange.com/questions/4037/server-side-validation-rule-is-not-being-found – ayush

+0

@ayush Извините, но я уже указываю путь. –

ответ

1

Есть некоторые правила, которые не следуют

  1. Вы использовали SEGMENT_NAME в качестве имени файла, но вы дали SegmentName в качестве имени класса. Оба должны совпадать.

  2. Не обязательно, но вы можете использовать в правилах файл

    jimport ('joomla.form.formrule');

    определено ('_ JEXEC') или умереть ('Ограниченный доступ');

    // Импорт Joomla formrule library jimport ('joomla.form.formrule');

    /**

    • класс Form Rule для Joomla Framework. */ класс 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

+0

Если не подчеркнуть, есть ли разделитель для разделения двух слов для имени правила? и я также попытался сохранить имя Sagment_Name класса, но оно тоже не сработало :-( –

+0

@RohitKhatri Я обновил ответ plz. –

Смежные вопросы