Новости Joomla

Совет по Joomla: $db->getQuery(true) стал устаревшим

Совет по Joomla: $db->getQuery(true) стал устаревшим

👩‍💻 Совет по Joomla: $db->getQuery(true) стал устаревшим.Раньше при создании запросов в базу данных мы всегда получали объект запроса с помощью метода

getQuery(). Если передавался параметр
$new =
true, то получали новый запрос. Если без - последний.

use Joomla\CMS\Factory;$db = Factory::getContainer()->get('DatabaseDriver');$query = $db->getQuery(new: true);// и строим запрос
Под капот Joomla 4 вошёл Joomla Framework (PHP фреймворк а-ля Laravel, Yii и т.д.), а для Joomla 5 он обновился - версия 3.4.1 вышла 6 октября 2023г. В методе фреймворка есть примечание о том, что параметр
$new, который передавался в метод
getQuery() помечен как устаревший и будет удалён в версии фреймворка 4.0.
The parameter $new is deprecated and will be removed in 4.0, use %s::createQuery() instead.В Joomla 4 версия Joomla Framework была 2.x., в Joomla 5 - 3.x. Поэтому есть предположение, что с выходом Joomla 6 обновится и версия фреймворка - станет 4.0. Поэтому для получения объекта для новых запросов следует использовать метод
createQuery(). Он уже представлен в ядре и широко используется. При этом метод
getQuery() останется, но, скорее всего, будет выполнять функцию только геттера - получения текущего запроса.
@joomlafeed#joomla #php #разработка

0 Пользователей и 1 Гость просматривают эту тему.
  • 8 Ответов
  • 1210 Просмотров
*

phpCoder

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Всем привет!

Достался мне сайт на Joomla 3. В нем есть самописный компонент. В нем организован список сущностей.  Эти сущности создаются, редактируются, но не удаляются.

При попытке удалить выбранную сущность появляется ошибка: "Обнаружена ошибка.  0 SQL: 00000, ,  Вернуться в панель управления"

В логах видно, что компонент обращается к этой же странице, но методом POST. Статус ответа 500.

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

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Для начала надо определить какой метод выполняется при удалении. Это можно посмотреть в действии самой кнопки, если сам не разберешься, то напиши в ответе HTML код кнопки удаления
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

phpCoder

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Для начала надо определить какой метод выполняется при удалении. Это можно посмотреть в действии самой кнопки, если сам не разберешься, то напиши в ответе HTML код кнопки удаления

<button onclick="if (document.adminForm.boxchecked.value==0){alert('Пожалуйста, выберите объект из списка');}else{ Joomla.submitbutton('purchases.delete')}" class="btn btn-small">
   <span class="icon-delete"></span>
   Удалить</button>
« Последнее редактирование: 24.11.2016, 17:02:22 от phpCoder »
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
<button onclick="if (document.adminForm.boxchecked.value==0){alert('Пожалуйста, выберите объект из списка');}else{ Joomla.submitbutton('purchases.delete')}" class="btn btn-small">
   <span class="icon-delete"></span>
   Удалить</button>

открывай файл purchases.php в (/components/com_my/models) и ищи там функцию delete
Там должно быть подключение к базе данных и выполнения SQL запроса которого нет!
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

phpCoder

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
открывай файл purchases.php в (/components/com_my/models) и ищи там функцию delete
Там должно быть подключение к базе данных и выполнения SQL запроса которого нет!

Может быть в /administrator/com_purchases/models/purchases.php ?

Такой файл есть, но метода нету. Может этот метод наследуется?(посмотрел еще один похожий компонент. сущность удаляется, а данного метода также нету в указанном пути)
« Последнее редактирование: 24.11.2016, 17:18:18 от phpCoder »
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Может быть в /administrator/com_purchases/models/purchases.php ?

Такой файл есть, но метода нету. Может этот метод наследуется?(посмотрел еще один похожий компонент. сущность удаляется, а данного метода также нету в указанном пути)

Без паники!
Есть еще один такой же файл, находится он в папке controllers это го же компонента, может там есть этот метод...
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

phpCoder

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Без паники!
Есть еще один такой же файл, находится он в папке controllers это го же компонента, может там есть этот метод...

Уже нашел. Метода delete нету. он наследуется, но зато переопределяется метод canDelete. Вот в нем видать и есть проблема. Буду завтра ковырять.

Спасибо большое за помощь!
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Вероятное решение
Цитировать
The problem here is the PDO driver, just use mysqli

Если в настройках сайта (база данных) стоит pdo, то надо выставить mysqli.
*

phpCoder

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Вероятное решение
Если в настройках сайта (база данных) стоит pdo, то надо выставить mysqli.
Да, стоит как раз MySQL(PDO). но никак не повлияло.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

routing в компоненте для соц сетей

Автор interregional

Ответов: 4
Просмотров: 829
Последний ответ 10.04.2019, 09:01:01
от sivers
Загрузка и сохранение изображения в компоненте

Автор GuDeVic

Ответов: 16
Просмотров: 1848
Последний ответ 09.04.2018, 08:48:40
от averkiev
Как в компоненте Backend получить чистый экран без системного джумловского меню ?

Автор tm2010

Ответов: 30
Просмотров: 2464
Последний ответ 10.02.2016, 19:34:41
от Aleks.Denezh
Создание динамических полей в своем компоненте

Автор NeuroZ

Ответов: 14
Просмотров: 1700
Последний ответ 18.08.2015, 11:17:59
от b2z
Обработка данных в компоненте перед сохранением

Автор ipservice

Ответов: 2
Просмотров: 1415
Последний ответ 27.07.2015, 12:46:01
от ipservice