Код снипета checkUrls с функцией checkUrls которая проверяет наличие ссылок в поле, и если они есть, то возвращает ошибку проверки (валидации):
<?php
function checkUrls($fl,$value) {
$pattern = '~[a-z]+://\S+~';
if($num_found = preg_match_all($pattern, $value, $out) > 0) {
// Ошибка, ссылки есть
return false;
}
// Всё хорошо, ссылок нет
return true;
}
Перед вызовом формы FormLister-а необходимо вызвать сам сниппет:
[!checkUrls!]
[!FormLister?...
Затем в FormLister, в правилах валидации для поля message задать правила валидации:
...
"message":{
"required":"Обязательно введите сообщение",
"custom":{
"function":"checkUrls",
"message":"Ссылки в тексте запрещены"
}
},
...
Начиная с версии 1.18.0 можно использовать сниппеты в правилах валидации:
...
"message":{
"required":"Обязательно введите сообщение",
"custom":{
"snippet":"checkUrls",
"message":"Ссылки в тексте запрещены"
}
},
...
Соответственно сниппет будет выглядеть:
$pattern = '~[a-z]+://\S+~';
if($num_found = preg_match_all($pattern, $value, $out) > 0) {
// Ошибка, ссылки есть
return false;
/*
Можно не задавать в описании правила ключ "message":
return "Ссылки в тексте запрещены";
*/
}
// Всё хорошо, ссылок нет
return true;
В сниппеты для валидации передаются параметры: