MODx-CMS

Разделы

Шаблоны

Плэйсхолдеры шаблона

Для многих стандартных полей формы eFrom автоматически вставляет соответствующие переменные шаблона. Также вы можете определить их самостоятельно:

  • [+validationmessage+] - Необходимо использовать в каком-то месте вашего шаблона или документа. С версии 1.4.2 эта переменная шаблона подверглась изменениям. Во-первых теперь ее не обязательно использовать в шаблоне. Теперь вы можете разместить ее в любом месте вашего документа. Во-вторых вам необязательно устанавливать какие-то тэги вокруг этой переменной. Теперь все html окружение включается в значение $_lang[\'ef_validation_message'] в языковом файле eForm.
  • [+vericode+] и [+verimageurl+] - необходимы если вы собираетесь использовать в форме графическую проверку (capthca). Смотрите в примерах как это использовать.
  • [+postdate+] - эта переменная будет использована в отчете и сообщении для пользователя после отправки данных формы и установит текущую дату и время.
  • [+debug+] - начиная с версии 1.4.1, автоматически устанавливается, если включен режим отладки, в форме и сообщении для пользователя после отправки. Не помещается автоматически в шаблон отчета. Необходимо избегать отправку технической информации через сервер. Если вы хотите протестировать отправку писем, то можете включить эту переменную самостоятельно.

Типы и форматы данных

eForm имеет встроенный анализатор определяющий формат и тип данных с соответствующей проверкой каждого поля. Для настройки используется добавление дополнительного параметра eform в необходимые поля.

<input type="text" name="color" eform="A Color:string:1" />

Базовый вид параметра eform следующий:

[description/title]:[datatype]:[required]:[validation message]:[validation rule]

Data types

Вы можете устанавливать только эти типы данных. Другие определяются автоматически.

Все поля автоматически проверяют на пустоту значений.

  • string - не имеет специальной проверки кроме пустоты и обязательности заполнения.
  • date - проверяется на правильность формата даты (основано на функции strtotime())
  • integer - проверяется на числовое значение (не проверяется, если оно целое)
  • float - проверка на числовое значение
  • email - проверяет правильность адреса email с использованием регулярных выражений
  • file - (для поля загрузки файла) - проверяет соответствие разрешенному размеру, на текущий момент не имеет проверки типов файлов.
  • html - также как тип string только перенос строки преобразуется в тэг <br />

Выпадающие списки, чекбоксы, и радиобатоны не требуют определения типа. eForm определяет их автоматически.

Extended Server Validation

Эта версия поддерживает расширенную проверку на стороне сервера и фильтрацию, использующую очень гибкие правила проверки, которые включаются в параметр eform. Вы можете определить 2 дополнительных параметра проверки, сообщение об ошибке и проверке или правило фильтра.

Например:

eform="Year of Birth:integer:1:Must be between 1950 and 2002:#RANGE 1950-2002"

Правила проверки:

#LIST - перечисленные через запятую возможные значения.

Например:

#LIST красный,зеленый,оранжевый,синий

#RANGE - разделенные запятой возможный числовые значения или числовые диапазоны. При установке диапазона порядок не имеет значения. 1~10 и 10~1 будут одинаково определять числа между 1 и 10 (включительно). Можно использовать как положительные так и отрицательные числа.

Например:

#RANGE 1,3,-5~-15,60~82

#SELECT - определяет правильность значений, которые будут возвращены из базы при запросе. Запрос должен возвращать значения только одной колонки (функция проверяет только первую колонку). Вы можете использовать {\DBASE} {\PREFIX} тэги. Они будут автоматически заменены на название базы MODx и используемый префикс таблицы.

Например:

#SELECT keyword FROM {\PREFIX}site_keywords

#EVAL - строка кода PHP. Может возвращать true или false. Внимание! Хотя #EVAL все еще используется в eForm 1.4, но в будущих версиях они скорее всего больше не будут поддерживаться. Взамен используйте #FUNCTION.

#FUNCTION - название функции. Функция должна использовать только одно значение (значение поля) и возвращать TRUE или FALSE. Смотрите примеры, чтобы разобраться как это действует.

Например:

#FUNCTION myValidationFunction

#REGEX - регулярное выражение. Синтаксис preg_match() в PHP.

Пример:

#REGEX /^[\a-z]+ [\a-z0-9_]+/i

#FILTER - фильтры не проверяют введенных значений, но заменяют слова и значения, которые соответствуют критериям. Вы можете использовать следующие фильтры:

  • #FILTER #LIST
    Используйте две вертикальные черты для разделения заменяемых и заменяющих слов.
    Например:
    #FILTER #LIST badword,verybadword||goodword,verygoodword
  • #FILTER #EVAL
    Например:
    #FILTER #EVAL return myFilterFunction($value);
    (естественно вы должны быть уверены в существовании указанной функции)
    Примеры применения фильтра:
    function myFilterFunction($value){\
       $badWords = array('scribble','coding');
       $goodWords = array('design','sleep');
       return str_replace($badWords,$goodWords,$value);
    }
  • #FILTER #REGEX
    Регулярное выражение замены. Синтаксис preg_replace() в PHP. Поиск и выражение замены разделяется двумя вертикальными чертами (||)

Поля select, radio и checkbox

Эти поля имеют автоматическу проверку. Все полученные значения проверяются на соответствие установленными вами в шаблоне формы. Это позволяет избежать добавления посторонних значений в эти поля.

Скрытые поля

По умолчанию скрытые поля присутствуют как защита от подделки формы при сравнении используемых значений (как в полях select, radio и checkbox). Но в некоторых местах это может быть ненужно. Например если вы используете обработку javascript, которая хранит свои значения в скрытых полях. В это случае вы можете изменить это поведение используя параметр eform (включая или выключая проверку).

Скрытое поле пример 1:

Встроенное поведение удобно, если вы храните в скрытом поле идентификатор документа и не хотите чтобы он был изменен кем-либо. Поле должно выглядеть примерно так:

<input type="hidden" name="docId" value="31" />

Скрытое поле пример 2:

Если вы используете javascript, который хранит значения в скрытых полях, то вам необходимо убрать проверку поля так:

<input type="hidden" name="calculatedField" value="" eform="::0::" />

Скрытое поле пример 3:

Пример похожий на 2, но вы хотите убедиться, что возвращенные значения лежат в допустимом диапазоне чисел. Установим для параметра eform заголовок, числовой тип данных, обязательность заполнения, сообщение об ошибке и проверку на диапазон. Это будет выглядеть так:

<input type="hidden" name="calculatedField" value="" eform="Calculated Value:integer:1:Calculation out of range:#RANGE 1-10" />

Пример полей с проверкой

  1. Выпадающий список - обязательное поле (не требуется проверка)
    <select name="mySelect" eform_options="Select Country::1" /> (тип данных не определен)
    <option value="en-au">Australia</option> <option value="en-us">USA</option>
    </select>
  2. Текстовое поле - обязательное поле и формат данных для дат.
    <input type="text" name="dobDate" eform_options="Date of Birth:date:1:@EVAL return (strtotime($value)!==-1)?true:false;" />
  3. Много чекбоксов - обязательное поле, можно выбрать несколько значений.
    <input type="checkbox" name="myColors[]" value="Red" eform_options="Colors::1" /> (тип данных не определен)
    <input type="checkbox" name="myColors[]" value="Green" /> (тип данных не определен)

Рекламная информация