MODx: Проблема с использованием регулярных выражений в Jot
02 Ноябрь 2008, 20:37
Захотелось вот на одном сайте сделать форму, чтобы пользователи могли оставлять комментарии. Сайт, как понятно из названия, на MODx. Для комментирования решил использовать сниппет Jot. На данный момент самая свежая версия - 1.1.4. Скачал, установил… вроде работает :). Но в дальнейшем появился один глюк, не позволяющий в полной мере использовать регулярные выражения для проверки на правильность ввода данных, но обо всём по порядку…
Для поля “имя пользователя” необходимо было сделать проверку на длину строки (чтобы не менее 5 символов). Не проблема - в Jot можно использовать регулярные выражения для проверки с помощью параметра validate. Синтаксис следующий:
fieldname:message(:validation),fieldname:message(:validation),…
Где fieldname - имя поля; message - сообщение, показываемое при ошибке; validation - правило проверки (number, email, регулярное выражение). Можно задать правила проверки для всех полей, разделяя их запятой.
Регулярное выражение для моего случая (длина строки не более 5 символов) следующее: /^.{5,}$/. В итоге получаем такой параметр:
&validate=`Name:Имя должно содержать не менее 5 символов:/^.{5,}$/`
Вроде бы всё правильно, но это не работает - вылазит ошибка: неверный синтаксис регулярного выражения. А проблема на самом деле в том, что в регулярном выражении мы используем запятую, но запятая используется в синтаксисе validate для разделения правил для полей. Соответственно строка парсится не правильно.
Для исправления этого глюка я решил заменить разделение полей в validate с запятой на “||”. Для этого открываем файл /assets/snippets/jot/jot.class.inc.php и переходим на строку 171, она выглядит следующим образом:
И заменяем запятую на на наш разделитель “||”:
Всё… теперь регулярные выражения в Jot работают корректно, но надо не забывать, что теперь разделителем в validate является “||” вместо запятой.
Занимаетесь полиграфией? Тогда вас должна заинтересовать бумагосверлильная машина. Качественный продукт.
Хотите камин, но нет возможности сделать дымоход? Ваш выбор Биокамин на этаноле. Нужен только камин и топливо - больше ничего.
Стена плача в одном клике. Напиши записку и её доставят!
*российская социальная сеть - может быть эта вам понравится.



Aramaki Says: 04.12.08 at 15:17
При критичности разделяителя ничто не мешает вставить в сниппет возможность менять его из запроса
Предводителев Сергей Says: 08.12.08 at 11:49
Согласен, решение будет более удобным, но всё равно надо сниппет изменять