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

manager2up

  • Осваиваюсь на форуме
  • 28
  • 1 / 0
Имеем AdsManager 2.7RC2 и Joomla  1.5.23.

Добавил новые поля в регистрацию, прикрутил их к профилю, редактируются как админки, так и фронта.
Использовал этот метод.

Все работает, только как вывести данные указанные при регистрации в объявление?
Берем к примеру колонку icq. В ней занесены данные, как вывести  в объявление?

Пробовал вывести в components/com_adsmanager/views/details/tmpl/default.php вот так:
Код
<?php $user = JFactory::getUser(); 
echo $user->icq;
?>

не работает. Ребята, прошу помощи.
« Последнее редактирование: 02.11.2012, 13:48:08 от ELLE »
*

rsa_m

  • Захожу иногда
  • 254
  • 22 / 0
Код
$icq = $user->get('icq');
*

manager2up

  • Осваиваюсь на форуме
  • 28
  • 1 / 0
К сожалению не работает. Кто еще что предложит?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Код: php
<?php
jimport( 'joomla.user.helper' );
$userProfile = JUserHelper::getProfile();
//print_r($userProfile); //глянь что здесь есть
echo $userProfile->icq;
?>
По ходу ошибся. Не зная, версию и J у Т/ С.
*

rsa_m

  • Захожу иногда
  • 254
  • 22 / 0
А в libraries/joomla/user/user.php в класс JUser случаем не нужно прописать public $icq = null; ?
*

manager2up

  • Осваиваюсь на форуме
  • 28
  • 1 / 0
Код: php
<?php
jimport( 'joomla.user.helper' );
$userProfile = JUserHelper::getProfile();
//print_r($userProfile); //глянь что здесь есть
echo $userProfile->icq;
?>
По ходу ошибся. Не зная, версию и J у Т/ С.


Ошибка
Fatal error: Call to undefined method JUserHelper::getProfile() in /www/components/com_adsmanager/views/details/tmpl/default.php on line 241

Joomla  1.5.23 и AdsManager 2.7 RC2
« Последнее редактирование: 06.10.2012, 23:27:46 от manager2up »
*

manager2up

  • Осваиваюсь на форуме
  • 28
  • 1 / 0
А в libraries/joomla/user/user.php в класс JUser случаем не нужно прописать public $icq = null; ?
Прописано
*

rsa_m

  • Захожу иногда
  • 254
  • 22 / 0
Ага.
В J1.5 в класс JUser переменную как
var $icq = null;
нужно добавить.
*

rsa_m

  • Захожу иногда
  • 254
  • 22 / 0
*

manager2up

  • Осваиваюсь на форуме
  • 28
  • 1 / 0
Нет (
Как его все таки вывести?
« Последнее редактирование: 06.10.2012, 23:44:31 от manager2up »
*

rsa_m

  • Захожу иногда
  • 254
  • 22 / 0
Хорошо, а id и username выводит ?
*

manager2up

  • Осваиваюсь на форуме
  • 28
  • 1 / 0
Вот так выводит имя и логин
Код
<?php echo $this->content->user; ?>
<?php echo $this->content->fullname; ?>
id выводит
*

rsa_m

  • Захожу иногда
  • 254
  • 22 / 0
id выводит

Проверьте что для выводимого id в таблице sql прописано icq.
Если оно прописано, то оба предложенных выше метода должны выводить его.
Я только что попробовал добавить поле icq у себя.
Добавил поле в таблицу, заполнил его.
в классе JUser добавил переменную.
И вывел icq.

Проверьте еще раз все.
*

manager2up

  • Осваиваюсь на форуме
  • 28
  • 1 / 0
Наверно ошибся, ID вывело 0, у моего юзера не 0.
Вот так выводит правильное ID
Код
$this->content->userid
*

rsa_m

  • Захожу иногда
  • 254
  • 22 / 0
Наверно ошибся, ID вывело 0, у моего юзера не 0.

Конечно ошиблись. Вы надеюсь с фронтэнда логинитесь под кемто что бы проверить. Иначе id будет 0.
Для проверки можно передать id в качестве параметра. Например JFactory::getUser('62');
*

manager2up

  • Осваиваюсь на форуме
  • 28
  • 1 / 0
Вывело.  ^-^
Спасибо
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено]Дублирования ссылки "объвления" в breadcrumb, в компоненте AdsManager

Автор nicklas

Ответов: 4
Просмотров: 3887
Последний ответ 25.04.2024, 23:13:18
от Rinat abzyi
Редактировать все объявления

Автор den_ko

Ответов: 32
Просмотров: 12576
Последний ответ 25.11.2021, 10:43:38
от FlexNL
Слетают категории объявления

Автор guardnext

Ответов: 1
Просмотров: 3399
Последний ответ 09.07.2019, 10:10:59
от guardnext
Не выводятся поля при просмотре с телефона

Автор Den85

Ответов: 0
Просмотров: 1688
Последний ответ 16.01.2019, 15:17:05
от Den85
AdsManger не удаляет объявления

Автор kozhenevsky

Ответов: 0
Просмотров: 1487
Последний ответ 15.02.2018, 12:08:29
от kozhenevsky