Проверка данных

    eForm: Проверка данных

    Проверка данных сниппета eForm для создание обратной связи, заказа звонка, оформление заказа товаров на Evolution CMS.

    Эта версия поддерживает расширенную проверку на стороне сервера и фильтрацию, использующую очень гибкие правила проверки, которые включаются в параметр 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" />

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

    Выпадающий список - обязательное поле (не требуется проверка)

    <select name="mySelect" eform_options="Select Country::1" /> (тип данных не определен)
        <option value="en-au">Australia</option>
        <option value="en-us">USA</option>
    </select>
    

    Текстовое поле - обязательное поле и формат данных для дат.

    <input type="text" name="dobDate" eform_options="Date of Birth:date:1:@EVAL return (strtotime($value)!==-1)?true:false;" />

    Много чекбоксов - обязательное поле, можно выбрать несколько значений.

    <input type="checkbox" name="myColors[]" value="Red" eform_options="Colors::1" /> (тип данных не определен)
    <input type="checkbox" name="myColors[]" value="Green" /> (тип данных не определен)