Может кто сталкивался с подобной ситуацией
БОЛЬШОЙ РАХМАТ !
Может кто сталкивался с подобной ситуацией
БОЛЬШОЙ РАХМАТ !
Добрый день.
Столкнулся с такой ситуацией. При выводе, стандартным способом, скрипта в конце страницы в шаблоне поля (ICMS 2.15.2) у меня этот код выводится дважды.
public function parse($value){ cmsTemplate::getInstance()->addBottom("<script> тут код </script>"); }
Дело в том, что в скрипте есть аякс запросы и соответственно они повторяются. А это не хорошо.
Может кто сталкивался с подобной ситуацией и знает как ее избежать?
По пункту 3 все благополучно разрешилось, в Конструкторе форм поле работает. А по пп 2 и 3 вопрос остался.
Добрый день.
Прошу помощи в одном вопросе.
Я создал виртуальное поле (public $is_virtual = true;), выводящее списки контента разными способами.
В ТК все работает отлично, в шаблоне работает через метод parse, в форме через getInput, используя следующие свойства
<?php public $title = 'Список контента'; public $is_virtual = true; public $var_type = 'string';
А вот в группах, профилях пользователей и конструкторе форм вышла заминка
1. В группах при создании поля пытается создать поле в БД и вылетает с ошибкой
503 Ошибка в запросе БД:
ALTER TABLE cms_groups ADD `list_ctype`
2. В Профилях пользователей, после создания поля во фронтенде пытается запросить это поле и естественно получает ошибку
Notice
: Undefined index: list_ctype in /system/controllers/users/actions/profile.php on line 25
3. В конструкторе форм поле создается, но не выводится и ошибками себя не проявляет.
Создатели ICMS говорят что с 2.15.0 с виртуальными полями вроде утрясли, на форуме крайне мало информации по ним, в документации тоже.
Чего может не хватать для нормального вывода поля в Группах контента, профилях пользователей и формах конструктора форм?
$item = $this->filterDateYounger('date_pub', '2018-10-03')->filterDateOlder('date_pub', '2018-10-05')->getItem('con_posts');
УТОЧНЕНИЕ.
filterDateYounger и filterDateOlder работают с датой через INTERVAL и формат '2018-10-05' здесь не уместен.
Если нужен промежуток между датами, то лучше так
$items = $model->filterBetween($date_field, $first_date, $last_date)->getItem($table_name); или $items = $model->filterBetween($date_field, '2018-10-03', '2018-10-05')->getItem('con_posts');
СПАСИБО, Fuze, за оперативный совет!
ДОКУМЕНТАЦИЯ СУПЕР! 👍
Добрый день.
Необходимо выполнить Аякс запрос из виджета в контроллере «content».
Пролистал форум нашел четкие указания Fuze "… создать миниконтроллер с одним экшеном, который вам будет отдавать что нужно."
Разместил запрос в виджете
$.post('/system/controllers/content/actions/widget_events_ajax.php', {month: 9, year: 2022}, function(data){ console.log(data); });
проверил его на вызове страницы, получил html-код.
Сделал пробное ухо в экшене /system/controllers/content/actions/widget_events_ajax.php
<?php class actionContentWidgetEventsAjax extends cmsAction { public function run(){ if (!$this->request->isAjax()){ return cmsCore::error404(); } // Если к нам идёт Ajax запрос, то ловим его $new_month = $_POST['month']; $new_year = $_POST['year']; return 'Это ajax запрос! Месяц:' . $new_month . 'Год:' . $new_year; } }
Но получаю 403 в консоли
ВОПРОС: Что здесь не так? Как получить ответ?
p.s. капсом писать название темы моветон
Согласен.
За совет спасибо!
Понятно. Так и должно быть. Чтобы работало нужно код править. Вы пытаетесь из аякся запустить аякс
Все верно.
Прежде чем править код хотел уточнить постановку задачи.
Если мы закомментируем этот код, то на странице по ссылке видим
А что вы еще вы должны видеть? Данные эта страница получает по аяксу. Вы видите то, что выводит аякс в случае ошибки. А если не по аяксу, значит пересылает на 404. У вас страница возвращает ошибку. Нужно искать её на странице. Аякс тут вообще не при чём.
Поставил себе компонент. Ошибки не наблюдаю. Откуда вы сохраняетесь в закладки?
Lora, все верно вы говорите.
Ситуация вот в чем. У меня на странице два списка, один из них подгружается по Аяксу и в том который не по Аяксу кнопка «Сохранено/В закладки» работает штатно, а в том который был подгружен по Аяксу поведение как выше описано.
Этот код и говорит, что если не аякс, то 404, а ваша ошибка видимо связана с чем то другим.
Если мы закомментируем этот код, то на странице по ссылке видим
{«error»:true,«message»:«csrf_token error»}
иначе, при незакомментированном коде переход на страницу 404
Этот вопрос, о возможности избежать такого поведения и обеспечить работоспособность на Аяксовском коде, скорее к InstantMedia, как к разработчикам Компонента «Избранное» или тем кто возможно сталкивался с этим вопросом.
В компоненте ИЗБРАННОЕ от InstantMedia в коде подгруженном по Аяксу при сохранении или записи в Закладки выдает 404 из-за кода
if (!$this->request->isAjax()){ return cmsCore::error404(); }
в файлах:
system/controllers/favorites/actions/save.php
system/controllers/favorites/actions/delete.php
ВОПРОС: Можно ли избежать такого поведения и добиться того чтобы Закладки работали и в коде под Аяксом?
а также где находится функция
system\libs\template.helper.php
Прошу подсказать в каком месте кода (файл) формируются:
system\controllers\content\actions\category_view.php, например
Lora, спасибо за html, а
$page, $perpage, $total, $page_url, $filter_query
формируются в renderItemsList файла system/controllers/content/frontend.php
Задача:
Сформировать начальную загружаемую страницу Списка ТК с места последней просмотренной user-ом Записи с последующей аякс подгрузкой прочитанных и непрочитанных записей в соответствии с установленной опцией $perpage.
Прошу подсказать в каком месте кода (файл) формируются:
$page, $perpage, $total, $page_url, $filter_query
а также где находится функция
html_pagebar($page, $perpage, $total, $page_url, $filter_query);
Если кто-то сталкивался с подобной задачей буду благодарен за советы.
wir, покажите весь код. Пока ключевые моменты
В переборе должно быть так
foreach($items as $key => $item){ ..... $items[$key]['new_bind'] = ...и в конце хука надо возвращать не data, a
return [$ctype, $items];
Собственно пока это весь код (модель).
Все начиналось с
Notice: Undefined index: new_bind in
Спасибо Zau4man и IamB вывели из ступора.
Посмотрел в учебнике
«Для того, чтобы напрямую изменять элементы массива внутри цикла, переменной $value должен предшествовать знак &. В этом случае значение будет присвоено по ссылке.».
Вот рабочее решение:
foreach($items as &$item){ $item['new_bind_msg'] = 8888888; }