Комментарии

Применение специального класса JFormRule
( 0 Голосов )

Еще один способ состоит в создании специального правила для поля. Правила проверки достоверности доступны с помощью атрибута validate. В Joomla установлен целый ряд правил проверки достоверности вводимых данных, включая логические, электронную почту, равенство, варианты выбора, телефон, URL, а также имя пользователя. Этим правилам соответствуют классы из папки libraries/oomla/form/rules. Если ни одно из этих предварительно установленных правил не подходит для проверки достоверности вводимых данных, можно установить свои собственные специальные правила именно с таким кодом, какой требуется. Для этого в XML-файл необходимо внести следующие изменения:

<fieldset  name="basic"  addrulepath="modules/mod_joompro_articles__author"> <field name="count" type="text" validate="countinteger" filter="integer" default="5" label="MOD_JOOMPRO_ARTICLES_AUTHOR_FIELD_NUMBER_LABEL" description="MOD_JOOMPRO_ARTICLES_AUTHOR_FIELD_NUMBER_DESC"> </field>

Сначала в элемент разметки fieldset вводится атрибут addrulepath с указанием пути к папке со специальным правилом. В данном случае она размещается на самом верхнем уровне структуры папок рассматриваемого здесь модуля. Затем в атрибуте validate элемента разметки field указывается имя файла с правилом (в данном случае count integer). Далее атрибут f ilter=" integer" добавляется с целью вынудить систему сохранить введенное значение как целое. Так, если кто-нибудь введет значение 15,5, оно должно быть сохранено как 15.

После этого в папку рассматриваемого здесь модуля вводится файл countinteger. php, в котором объявляется класс, реализующий специальное правило проверки вводимых данных на соответствие целым значениям. Ниже приведен исходный код из этого файла.

<?php
/**
* @copyright Copyright (С) 2012. All rights preserved.
* ©license GNU General Public License version 2 or later; see LICENSE.txt
*/ defined('JEXEC') or die; jimport('joomla.form.formrule'); class JFormRuleCountlnteger extends JFormRule { public function test(& $element, $value, $group = null, & $input = null, & $form = null) { return ((int) $value > 0 && (int) $value <= 30); } }

Этот класс называется JFormRuleCountlnteger и расширяет класс JFormRule. В нем определен только один метод test (), поскольку другие методы не требуются. В качестве одного из его аргументов указывается переменная $ value, которой присваивается значение, введенное в форме. В данном примере проверяется, находится ли введенное значение в пределах от 1 до 30. В противном случае будет выдано сообщение об ошибке "Invalid field: Number of Articles to Show" (Недействительное поле: количество отображаемых статей), а форма не будет сохранена.

Как видите, минимально и максимально допустимые значения в проверяемом поле жестко запрограммированы величинами 1 и 30. Логику работы класса JFormRuleCountlnteger можно сделать намного более развитой и гибкой, если устанавливать минимально и максимально допустимые значения в элементе field разметки формы из XML-файла. Для этого в элемент разметки field из данного XML-файла вводятся атрибуты minimum и maximum, как выделено полужирным в приведенном ниже коде.

<field name="count" type="text" validate="countinteger" minimum="l" maximum="10" filter="integer" default="5" label="MOD_JOOMPRO_ARTICLES_AUTHOR_FIELD_NUMBER_LABEL" description="MOD_JOOMPRO_ARTICLES_AUTHOR_FIELD_NUMBER_DESC"> </field>

Далее необходимо внести изменения в метод test() из класса JFormRuleCountlnteger, чтобы воспользоваться новыми атрибутами, как показано ниже.

function  test(&   $element,   $value,   $group = null,   & >$input = null,   &  $form = null) {
$max =   (int)   $element->getAttribute('maximum') & $element->getAttribute('maximum') : 30;
$min =   (int)   $element->getAttribute('minimum') & $element->getAttribute('minimum') : 1;
((int)   $value  >=  $min  &&   (int)   $value <=  $max); }

В приведенном выше фрагменте кода тернарный оператор языка РНР применяется для установки максимально и минимально допустимых значений в переменных $тах и $min соответственно. Данный метод должен оказаться работоспособным даже в том случае, если атрибуты maximum и minimum не установлены правильно. Для этого проверяется, установлено ли в них положительное целое значение. И если такое значение установлено, то оно используется далее, а иначе — выбираются устанавливаемые по умолчанию значения 30 и 1 соответственно.

В данном коде можно также изменить пределы допустимых значений, установив соответственно атрибуты maximum и minimum в XML-файле. Таким образом, установленное нами специальное правило оказывается намного более гибким и полезным не только в рассматриваемом здесь случае, но и в ряде других ситуаций.


Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости
Добавить комментарий


Защитный код