Tickets - обработка и получение полей Формы

Вначале коротко вопросы:
  1. Как осуществить кастомную обработку полей формы до отправки в БД? (частично решено)
  2. Как при выводе комментарий, обращаться к данным из «properties»? (уже узнал)
  3. Как контролировать то, что отправляется в «properties»?


Теперь подробней...

Для того чтоб в tickets создать тикет или комментарий надо заполнить соответствующую форму.

Подскажите, как в tickets предусмотрен механизм кастомной обработки полей отправленной формы.
Например, в чанке стандартной формы для Комментариев (tpl.Tickets.comment.form.guest), помимо всего прочего, есть
такие поля:
<input type="text" name="name" value="[[+name]]" id="comment-name" class="form-control"/>
<input type="text" name="email" value="[[+email]]" id="comment-email" class="form-control"/>
<textarea name="text" id="comment-editor" cols="30" rows="10" class="form-control"></textarea>

1) Как мне, например, проверить поле «name», по своему регулярному выражению, до того как его значение попадет в БД? Или вырезать с поля «text» все теги и пропустить через трим, а уже после чтоб летело в БД?

2) Если я добавлю в эту форму еще и свое поле, например:
<input type="text" name="phone" value="[[+phone]]" id="comment-phone" class="form-control"/>
То помимо первого вопроса еще возник логичный вопрос, как, при выводе комментариев, дергать данные этого поля с БД? Как я понял, данные поле «phone» летят в поле «properties» таблицы «tickets_comments», что-то вроде этого:
{"phone":"12345","requiredFields":"name,email","was_published":false}
Возможно есть какой-то плейсхолдер, через который я могу дёрнуть мой «phone», например: [[+properties.phone]]?
UPD. около часу спустя
Решил методом тыка проверить свое предположение…
Оказалось, что именно по такой конструкции и пишется плейсхолдер для полей попавших в «properties»:
[[+properties.phone]]
Неплохо было бы в мануале это указать.

3) Еще возник вопрос относительно того же столбца «properties» таблицы «tickets_comments».
Как контролировать то, что туда летит после отправки данных формы? Можно ли сделать так, чтоб туда вообще ничего не летело кроме ЗАРАНЕЕ перечисленных полей?
Потому как сейчас я вижу довольно таки неприятную картину…

По сути, любой пользователь может закинуть в этот «properties» тонну любой информации.
Например, он может прямо в браузере через инструменты разработчика добавить в форму еще один textarea «text2»,
<textarea name="text2" id="comment-editor" cols="30" rows="10" class="form-control"></textarea>
а уже в него вписать текстовый вагон с телегой (и можно только надеяться, что текст будет безобидный), после чего отправляет форму… В результате в поле «properties» таблицы «tickets_comments» будет что-то вроде:
{"text2":"My long hacking or vulgar text...","requiredFields":"name,email"}
Хотя в чанке, изначально, поля text2 не было.

Ребята, Василий, пожалуйста, помогите разобраться!
Гугл перелопатил… ничего толкового.
А в мануале совсем мало информации
Сuriosity
01 августа 2017, 16:46
modx.pro
1
1 405
0

Комментарии: 3

Сuriosity
01 августа 2017, 20:08
0
По поводу 1-го вопроса..
Правильный ли такой подход?
В чанке с формой, вместо:
<input type="text" name="my_value" value="[[+my_value]]" id="comment-my_value" class="form-control"/>
пишу:
<input type="text" name="my_value" value="[[+my_value:strip_tags]]" id="comment-my_value" class="form-control"/>
или
<input type="text" name="my_value" value="[[!mySnippetFilter? &val=`[[+my_value]]`]]" id="comment-my_value" class="form-control"/>
    Сuriosity
    01 августа 2017, 22:21
    0
    Если такой подход верный, то как такую проверку(редактирование) значения повесить на:
    <textarea name="text" id="comment-editor" cols="30" rows="10" class="form-control"></textarea>
    или на:
    <input type="radio" name="val" value="1">
    ??
    Сuriosity
    26 апреля 2018, 11:53
    0
    Верным решением, думаю, будет использование своего плагина, который будут обрабатывать нужные поля…
    Благо есть не малый перечень событий…
    Например, OnBeforeCommentSave
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3