Новости Joomla

Обработка HTTP ответа в Joomla 6+. Изменения по сравнению с Joomla 3 - Joomla 5

👩‍💻 Обработка HTTP ответа в Joomla 6+. Изменения по сравнению с Joomla 3 - Joomla 5.В Joomla для выполнения внешних запросов из PHP к сторонним API используется класс Joomla\Http\Http напрямую или же Joomla\Http\HttpFactory, который возвращает для работы преднастроенный по умолчанию класс Http. О работе с HTTP-запросами подробно рассказывалось в статье 2021 года Создание внешних запросов с использованием HttpFactory (Joomla). Некоторые изменения касаются работы с ответами на запросы. Например, наш запрос:
use Joomla\Http\HttpFactory;$http = (new HttpFactory)->getHttp($options, ['curl', 'stream']);$response = $http->get('https://any-url.ru/api/any/endpoint');
Раньше можно было получить код ответа или тело ответа как свойство $response - $response->code или $response->body. Однако, Joomla, начиная с Joomla 4 во многом переходит на стандарты PSR. В частности для работы с HTTP-ответами - на PSR-7. Также хорошая статья на Хабре о PSR-7: PSR-7 в примерах.
Прямое обращение к свойствам code, headers, body объявлено устаревшим в Joomla 6.0.0 и обещают удалить в Joomla 7.0.0.
Вместо этого нужно работать с HTTP-ответом по стандартам PSR-7. Код ответа.Было $response->code. Стало $response->getStatusCode().Заголовки ответа.Было $response->headers. Стало $response->getHeaders().Тело ответа.Было $response->body. Стало (string)$response->getContents().В тело ответа теперь приходит не строка, а поток - объект класса Laminas\Diactoros\Stream. Поэтому его нужно привести к строке (если это json, к примеру): (string)$response->getContents(). Чаще всего в коде Joomla встречается именно такой вариант. Однако, есть и вариант с перемещением указателя чтения на начало потока:
// Получили ответ в виде потока$stream = $response->getBody();// "перемотали" на начало$stream->rewind();// Получили строковый ответ$json = $stream->getContents();
В итоге результат одинаковый.@joomlafeed#joomla #разработка #php

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!Файловый менеджер Quantum — одно...

Файловый менеджер Quantum — одно из самых популярных решений для Joomla, созданное разработчиком из сообщества Joomla, Дмитрием Цымбалом (@tsymbalmitia). Он делает Quantum удобным, безопасным и современным, обновляет его, исправляет уязвимости и отвечает пользователям — всё это в свободное от основной работы время.

Теперь настал момент для следующего шага: развитие проекта требует больше времени и ресурсов.

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

chemerzaev

  • Давно я тут
  • 630
  • 83 / 3
  • Надо мыслить. Меня, например, кормят идеи.
Ошибка JDatabaseMySQL::query: 1146
« : 16.04.2012, 17:05:39 »
Вначале не открывалась главная страница, хотя другие ссылки работали правильно, решил включить отображение ошибок но результата это не дало, хотел попробовать включить систему отладки выдало вот такую ошибку вместо страницы oshibka.ru/administrator:
JDatabaseMySQL::query: 1146 - Table 'wwwmz.j17_templates_menu' doesn't exist SQL=SELECT template FROM j17_templates_menu WHERE client_id = 0 AND menuid = 0 ORDER BY menuid DESC LIMIT 0, 1
2. А на главной ошибка все еще висит: Nothing to see here. Move along.

Подскажите как решить данные проблемы
Я несчастный человек, который, как долбаный экстрасенс, должен понимать заказчика, даже если он сам не знает, чего хочет
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Ошибка JDatabaseMySQL::query: 1146
« Ответ #1 : 16.04.2012, 17:15:27 »
данная ошибка означает что нет таблиц "j17_templates_menu" В 2.5 такой таблицы вроде и нет.
Так что это скорее всего стороннее расширение.
*

chemerzaev

  • Давно я тут
  • 630
  • 83 / 3
  • Надо мыслить. Меня, например, кормят идеи.
Re: Ошибка JDatabaseMySQL::query: 1146
« Ответ #2 : 16.04.2012, 17:25:22 »
данная ошибка означает что нет таблиц "j17_templates_menu" В 2.5 такой таблицы вроде и нет.
Так что это скорее всего стороннее расширение.
А как сделать так что бы админка заработала? И да кстати у меня не 2.5 а 1.7
Я несчастный человек, который, как долбаный экстрасенс, должен понимать заказчика, даже если он сам не знает, чего хочет
*

chemerzaev

  • Давно я тут
  • 630
  • 83 / 3
  • Надо мыслить. Меня, например, кормят идеи.
Re: Ошибка JDatabaseMySQL::query: 1146
« Ответ #3 : 16.04.2012, 17:43:04 »
Может это как то поможет ниже ошибки в админке выдается вот такой список


Call stack
#   Function   Location
1   JAdministrator->initialise()   administrator/index.php:35
2   JApplication->initialise()   administrator/includes/application.php:82
3   JApplication->triggerEvent()   libraries/joomla/application/application.php:221
4   JDispatcher->trigger()   libraries/joomla/application/application.php:613
5   JEvent->update()   libraries/joomla/event/dispatcher.php:115
6   call_user_func_array()   libraries/joomla/event/event.php:48
7   plgSystemLangoverride->onAfterInitialise()   
8   JLanguage->__construct() plugins/system/langoverride/langoverride.php:43
9   GLanguage->load() libraries/joomla/language/language.php:241
10   JDatabase->loadResult() plugins/system/langoverride/langoverride.php:92
11   JDatabaseMySQL->query() libraries/joomla/database/database.php:1010
12   JError::raiseError() libraries/joomla/database/database/mysql.php:512
13   JError::raise()   libraries/joomla/error/error.php:250
Я несчастный человек, который, как долбаный экстрасенс, должен понимать заказчика, даже если он сам не знает, чего хочет
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Ошибка JDatabaseMySQL::query: 1146
« Ответ #4 : 16.04.2012, 17:55:28 »
Хмм, даже в Google на эту тему нифига... А какие-то изменения вносили? Может откатите сайт/базу на пару дней обратно?
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Re: Ошибка JDatabaseMySQL::query: 1146
« Ответ #5 : 16.04.2012, 18:18:01 »
plugins/system/langoverride/langoverride.php
вот этот плагин выключи в БД таблица extensions
*

Gura

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Re: Ошибка JDatabaseMySQL::query: 1146
« Ответ #6 : 19.01.2014, 16:22:31 »
Та же беда, после обновления Joomla 2.5

Откатил, не помогло.

JDatabaseMySQL::query: 1146 - Table 'kidsstar_test.jos_jsn_poweradmin_menu_assets' doesn't exist SQL=SELECT assets,
legacy FROM jos_jsn_poweradmin_menu_assets WHERE type='css' AND menuId='435'


Внимание: База данных устарела!

Обнаружена 1 ошибка базы данных

Схема базы данных (1.6.0-2011-01-10) не соответствует версии CMS (2.5.17).

Версия схемы базы данных (из #__schemas): 1.6.0-2011-01-10.
Версия обновления (из #__extensions): 2.5.17.
Драйвер БД: MySQL.
66 изменений базы данных были успешно проверены.
38 изменений базы данных не изменили структуру таблиц и были пропущены.
« Последнее редактирование: 19.01.2014, 16:38:35 от Gura »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

500 - Обнаружена ошибка

Автор CheCat

Ответов: 4
Просмотров: 1617
Последний ответ 19.12.2020, 07:39:07
от gartes
Ошибка recaptha

Автор Bolat19721

Ответов: 13
Просмотров: 1683
Последний ответ 11.10.2020, 09:44:38
от Bolat19721
ПОМОГИТЕ!!! Ошибка 500 в версии 2.5.19 при оформлении заказа

Автор promwood

Ответов: 10
Просмотров: 1865
Последний ответ 16.09.2020, 08:35:26
от AlexB
"Ошибка 404 - Материал нее найден" как заходишь на сайт

Автор Lepby

Ответов: 17
Просмотров: 41712
Последний ответ 11.06.2020, 08:48:10
от sound
Ошибка You have an error in your SQL syntax

Автор Jozheg

Ответов: 27
Просмотров: 2829
Последний ответ 23.05.2020, 00:23:37
от Jozheg