Tickets - обработка и получение полей Формы
Вначале коротко вопросы:
Теперь подробней...
Для того чтоб в tickets создать тикет или комментарий надо заполнить соответствующую форму.
Подскажите, как в tickets предусмотрен механизм кастомной обработки полей отправленной формы.
Например, в чанке стандартной формы для Комментариев (tpl.Tickets.comment.form.guest), помимо всего прочего, есть
такие поля:
1) Как мне, например, проверить поле «name», по своему регулярному выражению, до того как его значение попадет в БД? Или вырезать с поля «text» все теги и пропустить через трим, а уже после чтоб летело в БД?
2) Если я добавлю в эту форму еще и свое поле, например:
UPD. около часу спустя
Решил методом тыка проверить свое предположение…
Оказалось, что именно по такой конструкции и пишется плейсхолдер для полей попавших в «properties»:
3) Еще возник вопрос относительно того же столбца «properties» таблицы «tickets_comments».
Как контролировать то, что туда летит после отправки данных формы? Можно ли сделать так, чтоб туда вообще ничего не летело кроме ЗАРАНЕЕ перечисленных полей?
Потому как сейчас я вижу довольно таки неприятную картину…
По сути, любой пользователь может закинуть в этот «properties» тонну любой информации.
Например, он может прямо в браузере через инструменты разработчика добавить в форму еще один textarea «text2»,
Ребята, Василий, пожалуйста, помогите разобраться!
Гугл перелопатил… ничего толкового.
А в мануале совсем мало информации
- Как осуществить кастомную обработку полей формы до отправки в БД? (частично решено)
- Как при выводе комментарий, обращаться к данным из «properties»? (уже узнал)
- Как контролировать то, что отправляется в «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 не было.Ребята, Василий, пожалуйста, помогите разобраться!
Гугл перелопатил… ничего толкового.
А в мануале совсем мало информации
Комментарии: 3
По поводу 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"/>
Если такой подход верный, то как такую проверку(редактирование) значения повесить на:
<textarea name="text" id="comment-editor" cols="30" rows="10" class="form-control"></textarea>
или на:<input type="radio" name="val" value="1">
??
Верным решением, думаю, будет использование своего плагина, который будут обрабатывать нужные поля…
Благо есть не малый перечень событий…
Например, OnBeforeCommentSave
Благо есть не малый перечень событий…
Например, OnBeforeCommentSave
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.