Виктор |
|
---|---|
Как вывести сообщение cot_error после отправки формы? в общем есть плагин test (добавляет к модулю форму) test.module - файл (по хуку модуля) с тегами и шаблоном для вывода формы test - файл (standalone) - обработчик формы после отправки формы идем в обработчик test if ($act == 'add') { $r = array(); $r['test'] = cot_import('text', 'P', 'TXT'); cot_check(empty($r['test']), 'Нет текста'); ........ cot_redirect(cot_url('modules', $param, '', true)); если ошибка то редирект обратно на страницу, как здесь вывести ошибку?
|
jCube Group |
|
---|---|
ищите cot_message я точно не помню, там должно быть отправка сообщения и вторая функция показать, точно не помню, ищите пример в модулях Сделал группу в телеге https://t.me/Cotonti_help если что помогу с вопросами.
|
Виктор |
|
---|---|
#45067 jCube Group: не нашел сейчас пробую отловить, на каком то этапе эти сообщения хранятся в $_SESSION, но после полного обновления страницы массив пустой [cot_messages] => Array ( ) попробую их как то перехватить
Додано 2 години потому: не работает, может разработчики что подскажут, единственное что пришло - добавить к сесии если ошибка $_SESSION['cot_alert_messages'] = "error"; и уже в файле обработать if (!empty($_SESSION['cot_alert_messages'])) { $rv_msg = cot_custom_alert('error', $_SESSION['cot_alert_messages']); unset($_SESSION['cot_alert_messages']); } можно доработать все это доработать к функции, и добавить например вывод с помощью toastr function cot_custom_alert($type, $message) { switch ($type) { case "info": return "<script> toastr.info('" . $message . "'); </script>"; break; .....
Додано 12 годин потому: UPD насколько я понял, почему сообщения не выводятся, если по хуку модуля подключены еще плагины, и перед загрузкой плагина test загружается другой и в нeм присутствует cot_display_messages($t); то функция cot_clear_messages(); удаляет массив с сообщениями в $_SESSION['cot_messages'][$sys['site_id']] и далее соответственно в плагине test нечего выводить или вернее вывод делается на первом подключаемом плагине как у меня на отдельной вкаладке что не есть гуд в моем случае (так как пдключены к модулю две формы и плюс комментарии) нужно вывод сообщений прописать в модуле сразу после обьявления шаблона cot_display_messages($t); перед хуком подключаемых плагинов и прописать в нужном месте шаблона модуля вывод {FILE "{PHP.cfg.themes_dir}/{PHP.cfg.defaulttheme}/warnings.tpl"}, следовательно в плагинах cot_display_messages($t) можно удалить, теперь все сообщения будут выводится в нужном месте Думаю вопрос решен! |
|
Dit bericht is bewerkt door Виктор (2020-09-03 07:25, 4 jaren ago) |
jCube Group |
|
---|---|
cot_display_messages($t); и покажет и очистит все сообщения, а до этого нужно записать в сообщения, cot_message('сообщение'). но смотрите примеры в коде. Сделал группу в телеге https://t.me/Cotonti_help если что помогу с вопросами.
|
Виктор |
|
---|---|
#45069 jCube Group: да, я разобрался, по идее все описано в https://www.cotonti.com/ru/docs/devel/validation_messages , но теперь разобравшись как проходят все сообщения, как создаются, как проверяются, выводятся и удаляются, теперь проще работать с ними. для вывода например на определенных страницах можно подключить вывод с помощю toastr для этого создал в functions.custom фунцию, практически та же что cot_display_messages, только вывод через toastr, вывода: пример function cot_custom_display_messages($tpl, $block = 'MAIN') { global $L; if (!cot_check_messages()) { return; } $block = (!empty($block)) ? $block.'.' : ''; $errors = cot_get_messages('', 'error'); if (count($errors) > 0) { foreach ($errors as $msg) { $text = isset($L[$msg['text']]) ? $L[$msg['text']] : $msg['text']; $tpl->assign('TEST', cot_custom_alert('error', $text)); $tpl->parse($block.'TEST_ROW'); } } ................................. cot_clear_messages(); } в шаблоне (не подключаю шаблон а через тег) <!-- BEGIN: TEST_ROW -->{TEST}<!-- END: TEST_ROW --> и cot_custom_alert, пример выше в теме |