| Виктор |
|
|---|---|
|
Как вывести сообщение 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, 5 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, пример выше в теме |