Перевірка даних сніпета 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 badword,verybadword||goodword,verygoodword
#FILTER #EVAL return myFilterFunction($value);
(звісно ви повинні бути впевнені в існуванні зазначеної функції)
Приклади застосування фільтра:
function myFilterFunction($value){ $badWords = array('scribble','coding'); $goodWords = array('design','sleep'); return str_replace($badWords,$goodWords,$value); }
Ці поля мають автоматичну перевірку. Всі отримані значення перевіряються на відповідність встановленими вами в шаблоні форми. Це дозволяє уникнути додавання сторонніх значень в ці поля.
За замовчуванням приховані поля присутні як захист від підробки форми при порівнянні використовуваних значень (як в полях 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" /> (тип даних не визначений)