РЕГИСТРАЦИЯ
Гость
Вход не выполнен.

Как использовать доп поля для комментариев?

Sipth

  • Новичок
  • Посетитель
  • 7
  • 0
  • Жалоб нет
  • Регистрация:
#1

Попробовал как описано на вики но так не получается.
Для материалов это применяется нормально, но не для комментариев.


MrBoriska

  • Мастер
  • Администратор
  • 285
  • 11
  • Жалоб нет
  • Регистрация:
#2

В комментариях почти тоже самое, только контекст доступа к полям другой.
В дефолтном шаблоне вот так:

{{ comment.add_field_1 }}

Sipth

  • Новичок
  • Посетитель
  • 7
  • 0
  • Жалоб нет
  • Регистрация:
#3

это на редактирование поля или на вывод? или то и другое?

Круто это и то и другое.
Хорошо бы эту инфу в вики внести и данную тему можно закрыть.


Отредактировано автором в

Sipth

  • Новичок
  • Посетитель
  • 7
  • 0
  • Жалоб нет
  • Регистрация:
#4

Теперь возникли еще вопросы:
1)При создании доп полей есть поле для заполнения "Шаблон данных (рег. выражение):Максимальный размер cохраняемых данных(в символах)" что туда мжно записывать?
Как туда записать что бы делало проверку на правильную заполненность E-mail?

2) Как сделать что бы при редактировании комментария в доп поле выводилось то что туда заполнили? при добавлении и при редактировании использую вот так: <input type="text" name="add_field_1" value="{{ comment.add_field_1 }}"/>


Отредактировано автором в

Rad Cor

  • Участник
  • Пользователь
  • 26
  • 1
  • Жалоб нет
  • Регистрация:
#5
Цитата
2) Как сделать что бы при редактировании комментария в доп поле выводилось то что туда заполнили? при добавлении и при редактировании использую вот так:

По логике вещей нужно так:

 <input type="text" name="comment.add_field_1" value="{{ comment.add_field_1 }}"/>

Но я конечно могу и ошибаться)


gbox.su

MrBoriska

  • Мастер
  • Администратор
  • 285
  • 11
  • Жалоб нет
  • Регистрация:
#6

Да, на тему комментариев надо написать документацию. Контекст там не очевидный... В форме редактирования это {{ form }}, а в форме добавления это {{ data }} . Вывод комментариев у нас через массив {{ commentsr }} (да именно с r на конце.). Это, конечно, не дело. Нужно менять на адекватные названия. В формах контекст должен быть в {{ context }} , а в выводе сделать просто {{ comments }} . Дрюня слегка не подумал, когда придумывал названия. Думаю сейчас прямо и сменю. Посмотрим, получится ли мне красиво сохранить обратную совместимость.

Цитата
Но я конечно могу и ошибаться)

Ты, конечно, ошибся. :D
добавление:

<input type="text" name="data.add_field_1" value="{{ data.add_field_1 }}"/>

редактирование:

<input type="text" name="form.add_field_1" value="{{ form.add_field_1 }}"/>
Цитата
1)При создании доп полей есть поле для заполнения "Шаблон данных (рег. выражение):Максимальный размер cохраняемых данных(в символах)" что туда мжно записывать?Как туда записать что бы делало проверку на правильную заполненность E-mail?

Шаблон данных (рег. выражение)
В шаблоне данных записываешь регулярку и система будет осуществлять валидацию вводимых значений по этой регулярке. (обычная php регулярка). Для упрощения жизни можно использовать зарезервированные в константах регулярные выражения из встроенного класса Validate.

define ('V_TITLE', '#^[A-ZА-Яа-яa-z0-9ё\s\-(),._\?!\w\d\{\}\<\>:=\+&%\$\[\]\\\/"\']+$#ui');
define ('V_TITLE_NOHTML', '#^[A-ZА-Яа-яa-z0-9ё\s\-(),._\?!\w\d\{\}:=\+&%\$\[\]\\\/"\']+$#ui');
define ('V_INT', '#^\d+$#i');
define ('V_TEXT', '#^[\wA-ZА-Яа-яa-z0-9\s\-\(\):;\[\]\+!\.,&\?/\{\}="\']*$#uim');
define ('V_MAIL', '#^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i');
define ('V_URL', '#^((https?|ftp):\/\/)?(www.)?([0-9a-zабвгдеёжзийклмнопрстуфхцчшщъыьэюя]+(-?[0-9a-zабвгдеёжзийклмнопрстуфхцчшщъыьэюя]+)*\.)+[a-zабвгдеёжзийклмнопрстуфхцчшщъыьэюя]{2,6}(\/[+-\w\d=_.%\?&\/]*)*$#i');
define ('V_CAPTCHA', '#^[\dabcdefghijklmnopqrstuvwxyz]+$#i');
define ('V_LOGIN', '#^[- _0-9A-Za-zА-Яа-я@]+$#ui');
define ('V_LOGIN_LATIN', '#^[- _0-9A-Za-z@]+$#ui');
define ('V_FULLNAME', '#^[A-ZА-Яа-яa-zё\s\-(),.\D\']+$#ui');
define ('V_CITY', '#^[- _a-zА-Яа-я@]+$#ui');

Соответственно можно написать туда вместо самого регулярного выражения: #^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i , константу V_MAIL . И радоваться жизни)

Максимальный размер cохраняемых данных(в символах)
Для поля с типом text (кстати это не значит что <input type="text"/>, вы можете использовать и type="password" или вовсе <textarea>(правда тут нужно уложится в ограничение длины)) это значит, что сервер ждет обычную строку. Дык вот, вернемся к параметру, в нем указываете максимальную длину строки, которую примет сервер. Если в поле введется строка большего размера, то сервер на этапе приема данных, отвергнет запрос и вернет уведомление, мол "слишком длинная строка".

UPD:
Сделал адекватные названия меток. Коммит тут. (диффы там врут, поэтому смотрите изменения в режиме "двустороннее сравнение")


Отредактировано автором в

Sipth

  • Новичок
  • Посетитель
  • 7
  • 0
  • Жалоб нет
  • Регистрация:
#7
Цитата
константу V_MAIL . И радоваться жизни)

Проверять то оно наверно проверяет и в базу не добавляет если не удовлетворяет, но при добавлении ошибок не выдает Значит надо мутить проверку на стадии добавления, а тогда зачем проверка глубже...


MrBoriska

  • Мастер
  • Администратор
  • 285
  • 11
  • Жалоб нет
  • Регистрация:
#8

Sipth, там именно такая и стоит проверка. На стадии добавления. И должно выдаваться уведомление, если не соотв. рег. выражению или макс. количеству символов.
Возможно баг, я посмотрю. 

Ах, черт. Просто это старое сообщение. А я думаю. Вроде как все уже правили.


Отредактировано автором в
Тема закрыта