Вход для клиентов и партнеров
в начало сайта
Партнерская программаОнлайн демоСкачатьКарта сайта
 

Регламент
Документация
Часто задаваемые вопросы (FAQ)
Решения типовых вопросов
Форум поддержки
Библиотека разработчика

Посмотрите демо-ролики и убедитесь в том, что "Twilight CMS" очень удобна в управлении, понятна и проста.

Бесплатно скачайте "Twilight.Basic", установите на своем компьютере и изучите систему более детально.

Если вам нужно установить "Twilight CMS" на существующий сайт или разработать новый - обращайтесь в отдел интеграции.

 

Ваше имя
Ваш Email
Вопрос
Twilight.basic
  • Узнайте больше
  • Сравните версии
  • Twilight.selection
  • Узнайте больше
  • Сравните версии
  • Twilight.evolution
  • Узнайте больше
  • Сравните версии
  •  
    Главная // Форум поддержки

    Сборка сайта / Использование различных сервисов / Ключ epilogue в макросе Form

    есть новые сообщения  Время:   18.05.15 18:10
    Александр Нашел в недрах макроса Form такой замечательный ключ как epilogue. Как я понял в этом ключе можно указать любой другой макрос, который будет обработан ПОСЛЕ сохранения данных из формы в таблицу, но ДО редиректа на другую страницу или обновления текущей.

    Может я чего не понял, а возможно это баг или фича, но мой макрос в ключе epilogue обрабатывается каждый раз как только отрисовывается форма (именно только отрисовывается, без нажатия "отправить" и сохранения данных из формы) макроса Form.

    Я использовал вот такую конструкцию:

    $Form[html:commentform; savetodb:comments; trimfields:on; epilogue: $IncrementField[table:users; filter:login=$UserProfile[login]$; field:reputation; count:25]$]$

    По моей логике - пользователь заходит в блог, пишет комментарий в форме, нажимает "отправить форму", его камент сохраняется в таблице, исполняется макрос который дает ему +25 репутации, пользователь видит обновленную страницу со своим только что написанным комментарием.

    По факту - пользователь заходит в блог (в конкретную публикацию), видит внизу чужие каменты и уже отрисовавшуюся форму для добавления нового и тут же ни за что получает +25 репутации. И так каждый раз +25 за каждое обновление страницы :).

    А вообще ключ очень полезный, можно сразу инкрементировать поле числа каментов при добавлении нового, а не городить велосипед.

    Всё-таки это баг или я не допонял?

    есть новые сообщения  Время:   18.05.15 18:29
    Служба поддержки В ключе нужно передавать только имя макроса, например IncrementField. Этот ключ предназначен в основном для вызовов кастомных макросов, которые лучше располагать не в глобальной папке Macro, а в Macro внутри папки сайта. Макросу передадутся ключи source с именем таблицы и id c идентификатором обработанной в макросе Form записи. Остальное макрос должен знать сам. Передавать в этот макрос какие-то другие ключи возможности нет. В вашем случае проще взять IncrementField, сделать его копию с другим именем и положить локально в сайт, внутри в начале заменить присвоение имени таблицы не по ключу table, а по ключу source, который будет передан вам, сформировать filter и прочие ключи как вам надо.
    есть новые сообщения  Время:   18.05.15 19:37
    Александр Было все понятно до последнего предложения :), особенно в ступор вгоняет фраза "сформировать filter и прочие ключи как вам надо". Ладно, попробую разобраться как-нибудь...

    Ваше имя:

    Email:

    Сообщение:

    Прислать оповещение на email, если мне ответят

     
    © 2003-17 Страта Технологии (создание сайтов, разработка cms), Twilight CMS in english.
    Наш адрес: Москва, пр. Маршала Жукова д.51
    Тел.: (495) 222-6436, E-mail: , карта сайта, условия использования информации о CMS
    Звоните через Skype:  

    Реклама: