Новости Joomla

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

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

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
я дописываю одни компонент и стоит задача вывести информацию о авторе объявления. по дефолту у меня есть id этого автора. имя, почту можно вытянуть из $user. а полная информация о пользователе записывается в $contact, то есть телефон, адрес, сайт и т.п.
как получить к ней доступ? id то разные у $user и $contact
*

Aventurier

  • Захожу иногда
  • 127
  • 16 / 0
Под user и contact имеются в виду jos_users и jos_contact, я правильно понял?
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
*

Aventurier

  • Захожу иногда
  • 127
  • 16 / 0
Тогда вопрос к вам - если вы писали расширение, то по какому принципу вы вводите данные в таблицу jos_contact, такой таблицы по дефолту нет, то есть вы ее создавали?
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
я не сам пишу расширение, а дописываю jea (joomla estate agency). но данные в jos_contact_details я ввел в админке: создал несколько пользователей, и в компоненте контактов ввел нужную информацию и привязал контакты к созданным ранее юзерам. все, информация уже в базе. теперь вопрос как ее оттуда достать и вывести в нужном компоненте?
*

Aventurier

  • Захожу иногда
  • 127
  • 16 / 0
Ааааа, так бы и сказали что это таблица jos_contact_details, а то непонятно же. В этой таблице есть ячейка user_id - к ней и привязывайтесь
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
не выходит.
получается у меня есть id юзера - это переменная created_by. из нее я получаю доступ к jos_users, вот таким путем:

  <?php if (is_numeric($this->row->created_by)): ?>
        <?php $agent =& JFactory::getUser($this->row->created_by); ?>

и далее могу вывести информацию которая хранится в юзерс, а это имя, почта. а нужная мне информация уже записана в jos_contact_details. я так понимаю мне нужно переформулировать запрос чтобы брать информацию из jos_contact_details. но как это сделать? ))
*

Aventurier

  • Захожу иногда
  • 127
  • 16 / 0
Сделать запрос в БД в таблицу jos_contact_details и указать по какому параметру выбирать оттуда строку - по user_id, который равен вашей переменной $this->row->created_by
Поищите в сети - там есть указания как делаются такие запросы.
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
нагуглил один пример:
       
$db =& JFactory::getDBO();
$sql = "SELECT * FROM  #__contact_details";
$result =  $db->loadResultArray(5);
foreach ($result as  $row)
{
echo($row."<br>");
}

но он почему-то опять таки берет данные из jos_users. вобще не могу понять чего это, я же указал в какой ветке искать
*

Aventurier

  • Захожу иногда
  • 127
  • 16 / 0
$result =  $db->loadResultArray(5);
Не могу понять что за 5 в скобках
$result =  $db->loadResultArray();
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
5 строка таблицы. тоесть именно это форма выводит 5й параметр таблицы jos_users, а именно переменную группы пользователя. но почему именно юзерс, я не понимаю. даже если удалить строку поиска $sql = "SELECT * FROM  #__contact_details"; всеравно в итоге выводится переменный из юзерс

может я неправильно запрос написал?
*

nixsystem

  • Захожу иногда
  • 207
  • 10 / 0
Если в таблицах jos_users и jos_contact_details есть данные принадлежащие одному объекту (в данном случае пользователю) то толжно быть поле по которому эти данные связаны (связь один ко многим). Вот по этому полю можно вытащить.
Если этой связи между таблицами нет - то никак это не вытащить, потому что невозможно будет установить какому user'у из jos_users какой contact из jos_contact_details соответствует.

За эту связь как раз и отвечает поле user_id. Чтобы получить искомые данные нужно выполнить следующий запрос
Код: sql
SELECT * FROM  #__contact_details WHERE user_id = 48
В контексте Joomla это будет выглядеть так
Код: php
//$user_id - содержит id нужного пользователя полученный из jos_users
$db = JFactory::getDBO();
$sql = "SELECT * FROM  #__contact_details WHERE user_id = ".$user_id;
$result =  $db->loadResultArray;
foreach ($result as  $row)
{
echo($row."<br>");
}
Этот код построчно выведет все контакты пользователя, если такой контакт не один.
*

Aventurier

  • Захожу иногда
  • 127
  • 16 / 0
Да, а я совсем не заметил что у вас WHERE отсутствует, прошу извинить, еще опыта маловато. :)
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
спасибо, код работает, но всеравно информация берется из jos_users и поле "$sql = "SELECT * FROM  #__contact_details WHERE user_id = ".$user_id;" воообще игнорируется. даже без него выдается тот же результат, из джос_юзерс.

как можно проследить как работает запрос? или может это у меня на странице где-то ошибка? или компонент изначально кривой?
*

nixsystem

  • Захожу иногда
  • 207
  • 10 / 0
Конкретный пример запроса и кода его сопровождающего приведите пожалуйста, тогда будет видно что откуда - куда и почему.
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
$db = JFactory::getDBO();
$sql = "SELECT * FROM  #__contact_details WHERE user_id = ".$user_id;
$db->setQuery($sql);
$result =  $db->loadResultArray;
foreach ($result as  $row)
{
var_dump($row);
}
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
именно с $db->setQuery($sql); выдает ошибку Warning: Invalid argument supplied for foreach()
еще у одного человека та же самая беда с этим компонентом. я делаю вывод, значит где-то есть какой-то глобальный параметр, который задает этот путь по умолчанию, откуда берутся потом данные (в данном случае это джос_юзерс). придется перелопатить весь компонент.
на что обратить внимание? я прав в теории о глобальном параметре?
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Да какой параметр. sql-запрос неправильный. Не вытаскивает данные из базы. Почему сам выясняй. Отладь запрос на чем нибудь. Инструментов для этого куча.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
подскажи пожалуйста, как отладить, что за инструменты?
*

Lex

  • Завсегдатай
  • 1615
  • 274 / 1
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Aventurier

  • Захожу иногда
  • 127
  • 16 / 0
$db = &JFactory::getDBO();
 $db->setQuery('SELECT * FROM #__contact_details WHERE user_id = '.$user_id);
 $article_id = $db->loadObjectList();
 или
 $article_id = $db->loadResultArray();

Надеюсь не ошибся
*

Aventurier

  • Захожу иногда
  • 127
  • 16 / 0
Кстати, может я упустил, откуда взялась переменная $user_id ? У вас вроде $this->row->created_by
*

chikvito

  • Захожу иногда
  • 60
  • 2 / 0
отладка и вправду помогла, у меня два лишних пробела было в запросе))))

Код
$db->setQuery('SELECT * FROM #__contact_details WHERE user_id = '.$user_id);

а нужно было
Код
 user_id='.$user_id);

всем спасибо за помощь)))
« Последнее редактирование: 03.04.2012, 04:59:53 от chikvito »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

модуль Newsflash: как вывести дату?

Автор joomloid

Ответов: 5
Просмотров: 3705
Последний ответ 03.04.2019, 12:25:27
от pH43
Как вывести все категории всех разделов на одной странице?

Автор genius

Ответов: 4
Просмотров: 2349
Последний ответ 22.01.2019, 08:38:30
от genius
Как вывести список новых статьи?

Автор maxo127

Ответов: 4
Просмотров: 2501
Последний ответ 16.06.2018, 02:44:50
от maxo127
Вопрос о правильности разметки тегами на странице

Автор dpy1995

Ответов: 10
Просмотров: 6446
Последний ответ 09.01.2018, 12:49:25
от kungurskiy
Появление элемента на странице которого не должно быть - откуда?

Автор sergey113

Ответов: 1
Просмотров: 1773
Последний ответ 29.03.2016, 02:08:24
от sergey113