Новости 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 Гость просматривают эту тему.
  • 4 Ответов
  • 2018 Просмотров
*

meiram077

  • Захожу иногда
  • 225
  • 0 / 0
Всем привет!

При создании нового поля мы в настройках отмечаем в какой позиции макета отображать то или иное поле. Это всем известно.

Цитировать
Показывать в позиции: top.()
                                    subtitle.()
                                    description.()
                                    description2.(Цена:)
                                    contact.(Контакты:<br/>)

Но мне не дает покоя следущее. Приведу на своем примере.
Я создал для позиции subtitle.() два поля с заголовками: "Цена" и "Валюта".
Далее при подаче объявления они отображаются следующим образом. Пример:

                       Цена: 10000
                       Валюта: $

Мне так не нравится т.е. столбиком. Надо в строчку вот так:

                       Цена: 10000$

Смысл в том, чтоб эти поля между собой отображались в строчку, а не в столбик при полном выводе объявления.
Как это реализовать? Кто знает?
« Последнее редактирование: 08.11.2012, 14:04:59 от meiram077 »
*

meiram077

  • Захожу иногда
  • 225
  • 0 / 0
Мне кажется собака зарыта где-то в этих позициях: top, subtitle, description, description2, contact. Но где именно и как к ним подобраться?
Думаю истина где-то рядом! Так ответьте кто-нибудь? Разве это ни кому не интересно?  :(
« Последнее редактирование: 08.11.2012, 14:11:58 от meiram077 »
*

meiram077

  • Захожу иногда
  • 225
  • 0 / 0
Всем кто хотел мне помочь большое спасибо за это! Я бы поставил +, но не успею, поскольку сам справился!

X:\home\localhost\www\сайт\components\com_adsmanager\helpers\field

166-я строчка!

вместо:
$return .= $value."<br/>";

вставил:
$return .= $value." ";
*

Grendy

  • Захожу иногда
  • 247
  • 26 / 0
Я создал для позиции subtitle.() два поля с заголовками: "Цена" и "Валюта".

Мне кажется собака зарыта где-то в этих позициях: ..., subtitle, ..., ..., ....

У вас определённо есть способности. В будущем, наверное, станете самым известным программистом.

Разве это ни кому не интересно?  :(

Нам гораздо интереснее смотреть на то, что вы ещё придумаете.
« Последнее редактирование: 09.11.2012, 13:17:10 от Grendy »
Плюс в репутацию больше говорит о благодарности, чем слово "Спасибо" в теме, которую повторно, возможно, никогда уже не посетишь.
*

meiram077

  • Захожу иногда
  • 225
  • 0 / 0
Цитировать
Нам гораздо интереснее смотреть на то, что вы ещё придумаете.

I'll be back!
To be continued ...
Такие вот пирожки!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Некорректное отображение description в Google

Автор RodionMurin

Ответов: 1
Просмотров: 997
Последний ответ 02.04.2016, 11:46:47
от RodionMurin
Пустые позиции - как убрать?

Автор t.r.a.x

Ответов: 10
Просмотров: 1441
Последний ответ 21.10.2015, 09:36:09
от flyingspook
Оптимизация <meta name="description" content="...."> в AdsManager 3.X

Автор a.Lexus

Ответов: 1
Просмотров: 1304
Последний ответ 06.02.2015, 16:39:25
от a.Lexus
Изменения к AdsManager (description, keywords, title , captcha(kcaptcha))

Автор AlexSims

Ответов: 61
Просмотров: 20809
Последний ответ 19.07.2014, 12:01:30
от lustoff
Добавить позиции показа!

Автор rusdark

Ответов: 13
Просмотров: 4040
Последний ответ 16.06.2014, 13:13:58
от AnimalInstinct