Narochnyi

Narochnyi

+71
Репутация
418
Рейтинг
#1 [ЕСТЬ РЕШЕНИЕ] PHP. Создать ключи массива из строки 19 марта 2023 в 09:20

Всем привет!

Нужна ваша помощь, не могу сообразить.

Есть массив

  1. $array = [
  2. '4754.text.1.5' => 'value',
  3. '4356.val.15.1' => 'value',
  4. '4454.chec' => 'value',
  5. '4898.icms.2.15.2' => 'value'
  6. ];

Подскажите как создать ключи в новом массиве и записать туда значения из первого?

Пример:

  1. $new_array[4754]['text'][1] = 'value'
#1 [ЕСТЬ РЕШЕНИЕ] grid таблица в модальном окне 23 января 2023 в 15:17

Идея оказалась провальной. Так как на одной странице нельзя использовать две или более GRID таблицы, и при открытии таблицы в модальном окне, данные подгружаются не только в эту таблицу, но и в таблицу под модальным окном.

#2 [ЕСТЬ РЕШЕНИЕ] grid таблица в модальном окне 15 января 2023 в 18:17

Перед кодом

  1. $this->renderGrid($this->href_to("template_grid"), $grid);

добавил

  1. $this->addTplJSNameFromContext(['datagrid', 'datagrid-pagination'])

Всё заработало. Просто не было инициализации скрипта icms.datagrid.init();

#3 [ЕСТЬ РЕШЕНИЕ] grid таблица в модальном окне 15 января 2023 в 17:26

 Loadырь, сейчас все перепроверю

#4 [ЕСТЬ РЕШЕНИЕ] grid таблица в модальном окне 15 января 2023 в 17:12

Так как вы выводите нормальную сетку, если «по стандарту» выводится ее содержимое в json формате?

Loadырь

Нет, выводится названия заголовков и иконка загрузки таблицы, самих данных нет. Об этом написал в посте)

#5 [ЕСТЬ РЕШЕНИЕ] grid таблица в модальном окне 15 января 2023 в 17:01

Так работать не будет, так как в исходном коде отсутсвует сама сетка и получается возвращаемым данным некуда вернутся

Loadырь

Метод «renderGrid» все это делает, ведь если открыть страницу обычно, не в ajax, то данные есть! Проблема именно с получением данных через AJAX

#6 [ЕСТЬ РЕШЕНИЕ] grid таблица в модальном окне 15 января 2023 в 16:48

a.modal или всё таки a.ajax-modal?

.modal в модерне скрывается стилями.

Loadырь

Да, через стандартные средства системы a.ajax-modal

#7 [ЕСТЬ РЕШЕНИЕ] grid таблица в модальном окне 15 января 2023 в 16:41

А где само модальное окно? Или этот код уже в нём?

Lora

Модальное окно системное, которое вызывается через ссылку «a.modal», в нем уже открывается обычная страница, на этой странице расположен код, который я написал выше.

#8 [ЕСТЬ РЕШЕНИЕ] grid таблица в модальном окне 15 января 2023 в 15:49

Каким образом выводите в модальное окно?

Loadырь
  1. $this->renderGrid($this->href_to("template_grid"), $grid);
#1 [ЕСТЬ РЕШЕНИЕ] grid таблица в модальном окне 15 января 2023 в 15:11

Всем привет!

Появилась необходимость вывести grid таблицу в модальном окне, но возникла проблема, заголовки столбцов отображаются, а вот сами данные нет, только крутиться индикатор загрузки таблицы. Если открыть страницу, которую открываю в модальном окне, то grid таблица отображается нормально.

Подскажите, в чем может быть проблема, и как сделать отображение grid таблицы в модальном окне?

#1 Функция из Helper в Cron 18 июня 2022 в 04:25

Всем привет.

Как из файла /hooks/cron_name.php обратиться к функциям из файла "\templates\modern\assets\helper.php"?

Второй вопрос: В переменной имеется название функции. Например: «testicms». Как обратиться и передать в функцию значения в компоненте.

  1. $test['function'] = "testicms";
  2. $this->$test['function'] ('param');
  3. ($this->$test['function'] )('param');

 Так пробовал, ошибка Uncaught Error: Function name must be a string

Добавлено спустя 7 часов

Простите за глупый вопрос. Решил с помощью call_user_func_array

#9 Уникальные заголовки тип контента 8 марта 2022 в 16:57

Условно говоря, на сайте-доноре берется заголовок. Его длина составляет 150 символов. На вашем сайте в базу может влезть только 100 символов. В этом случае заголовок обрезается со 150 до 100 символов. В итоге при проверке ищутся заголовки длиной 150 символов, а там только длиной 100 символов, поэтому их и не находит. И как следствие пишутся в базу новые записи.

Loadырь

Понял. Но нет, заголовки у донора и в базе одинаковой длины.

Добавлено спустя 29 минут

Сделал проверку, как это делает система:

  1. $this->cms_core->db->isFieldUnique('con_content', 'title', $title);

всё равно добавляются с одинаковым названием(

Добавлено спустя 20 минут

Заметил что в названиях, которые не проходят проверку на уникальность, есть символ "&". Думаю проблема в этом. Но в БД в записи тоже есть эти символы.

Добавлено спустя 3 минуты

Когда запускаешь функцию isFieldUnique в ручную, то названия находятся!

Добавлено спустя 23 минуты

Нашел решение проблемы. Обработал название функцией htmlspecialchars_decode

#10 Уникальные заголовки тип контента 8 марта 2022 в 15:03

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

Loadырь

Не совсем тут Вас понял. Названия не обрезаются, точно такие же!

Мета символы могут присутствовать типа кавычек, неразрывных пробелов и т.п. В базу пишется заголовок прошедший некую обработку/чистку, вам надо повторить эту обработку перед тем, как искать дубли.

Loadырь

Да, они присутствуют, но сравнивал до внесения в базу и после — названия идентичные!

#1 Уникальные заголовки тип контента 8 марта 2022 в 12:48

Всем привет!

С помощью планировщика добавляются записи в тип контента.

Создано условие, чтобы не добавлялись записи с одинаковым заголовком (title)

  1. return $this->filterLike('title', "%{$title}%")->getItem('con_content');

Так же пробовал делать такую проверку

  1. return $this->filterEqual('title', $title)->getItem('con_content');

Если запись находится, записывается лог и добавление отменяется. 

Проблема в том, что некоторые записи все равно добавляются с одинаковым названием, и потом при поиске дублей можно найти все эти записи. Названия полностью одинаковые. Подскажите, в чем может быть проблема?

#11 Медленное выполнение запросов с DISTINCT 2 февраля 2022 в 11:39

Проблема с выводом виджетов. На скрине видно. Как оптимизировать запрос? После кеширования, работает быстро, но первая загрузка длительная! На странице 6 виджетов

Изображение

🍪Мы используем файлы cookie для работы сайта. Читать подробнее.