Новости 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

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6.2PageBuilder Toolkit - это специализированный плагин для конструктора страниц Yootheme Pro, содержит набор различных утилит для ускорения процесса работы и отладки макета, множественные улучшения в интерфейсе, включая поддержку dark mode, подсказки, быстрая смена разрешения в окне просмотра и много чего еще.v.1.6.2 Что нового?- Индикатор статусов: теперь не просто показывает состояние запросов, но и делает автоматические попытки их отправки при кратковременных сбоях в сети, а если это не помогло, то переводит конструктор в ручной режим, что позволяет сохранит макет и настройки темы прежде чем вы потеряете все, что было сделано с момента последнего сохранения- Подсветка ошибок в макете: плагин анализирует код страницы и может автоматически подсвечивать data атрибуты с кучей мусора, которые попадают в код страницы при копипасте из Figma в TinyMCE (пригодится для старых макетов, в текущей работе плагин сам очищает код мусора). Также есть подсветка семантических ошибок сборки - дубли h1 тега на странице и вложенных друг в друга заголовков.- Улучшена поддержка будущего релиза Yootheme Pro 5 и редактора CodeMirror 6Плагин для русскоязычных пользователей доступен в каталоге расширений SovMart и распространяется за символическую плату (100р). Разработчики Joomla расширений и партнеры автора могут получить плагин бесплатно.Для работы плагина необходим конструктор страниц Yootheme Pro.Разработчик плагина - участник нашего сообщества Александр Судьбинов (@alexrevo), член официальной группы поддержки Yootheme Pro. Страница расширенияОписание на сайте автора@joomlafeed#joomla #yootheme

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

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Хочется получить для обработки данные из других таблиц.
Получить хочу во время редактирования формы (пока после сохранения)
Стал смотреть где можно это все сделать и нашел функцию load начал ее переопределять...
Скопировал родителя и меняю запрос к базе - добавляю JOIN LEFT поля из других таблиц. Запрос проверил в MySQL он отрабатывает правильно, а вот получить значения в выводе не получается. получаю так var_export($this->item, true).

Такое чувство что кто-то отрезает потом эти данные.
Подскажите в каком месте они срезаются?
И если я нагородил, то как решить данный вопрос.

В целом нужно получить пару полей из связанных таблиц чтоб сделать расчет и положить.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
нашел функцию load
Какого класса? JTable, что ли? Почему не приводить код или хотя бы давать информацию не в усеченном виде?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Извиняюсь
Код
...
class TableTurism_Order extends JTable
...
public function load($keys = null, $reset = true) // Копия с той функции что в JTABLE
{
...
// Initialise the query.
$query = $this->_db->getQuery(true);
$query->select( 'o.*' );
$query->select( 't.title as tt' );
$query->select( 'c.title as ct' );
$query->join( 'LEFT', '#__turism_customer as c ON c.id=o.customer_id' );
$query->join( 'LEFT', '#__turism_tour as t ON t.id=o.tour_id' );
$query->from($this->_tbl. ' as o');

$fields = array_keys($this->getProperties());

foreach ($keys as $field => $value)
{
// Check that $field is in the table.
if (!in_array($field, $fields))
{
throw new UnexpectedValueException(sprintf('Missing field in database: %s   %s.', get_class($this), $field));
}
// Add the search tuple to the query.
$query->where('o.'.$this->_db->quoteName($field). ' = ' . $this->_db->quote($value));
}

$this->_db->setQuery($query);

$row = $this->_db->loadAssoc();

// Check that we have a result.
if (empty($row))
{
$result = false;
}
else
{
// Bind the object with the row and return.
$result = $this->bind($row);
}

// Implement JObservableInterface: Post-processing by observers
$this->_observers->update('onAfterLoad', array(&$result, $row));

return $result;
}
Изменил только то что касается запроса
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Вы же вроде умеете код читать.
Код
			// Bind the object with the row and return.
$result = $this->bind($row);
Не будь паразитом, сделай что-нибудь самостоятельно!
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Вы же вроде умеете код читать.
Да еще видать не все. Че ему не нравится?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Прочитайте ее. Но должен сказать, что вы идете не тем путем. Переопределите методы в модели, а не в JTable.
« Последнее редактирование: 17.03.2016, 19:05:36 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Переопределите методы в модели, а не в JTable.
Спасибо! Вот что вышло:
написал в модели функцию и вызываю её из переопределенной фукнции getItem
Спойлер
[свернуть]
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Код: php
$query->where('o.id=\''.$item->id.'\'');

Вы думаете таким образом обезопасили запрос? Забавно, но это как раз потенциальная sql иньекция. В данном контексте может и ничего но если вы так же и пользовательские данные фильтруете то это ппц. Есть у JDatabase метод quote который помимо того что оборачивает переменные в кавычки еще и экранирует кавычки внутри строки. А если ид целочисленное, то можно просто к integer привести.  
« Последнее редактирование: 17.03.2016, 21:46:57 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Да он до этого, IMHO, еще не дошел.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Да он до этого, IMHO, еще не дошел.

Ну, c этого по хорошему надо начинать.  
интернет-блог: http://websiteprog.ru
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Переопределяю метод load для таблицы
« Ответ #11 : 17.03.2016, 22:13:56 »
Да кстатии, отличная статья. Всем разработчикам расширений для Joomla надо с нее начинать.
интернет-блог: http://websiteprog.ru
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Переопределяю метод load для таблицы
« Ответ #12 : 17.03.2016, 22:21:24 »
Все спасибо! Да не дошел. Читаю!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Связать две таблицы с БД для дальнейшего вывода данных с них

Автор golinejj

Ответов: 16
Просмотров: 1304
Последний ответ 06.02.2020, 15:40:58
от golinejj
$data->id из LoadForm в метод save

Автор platonische

Ответов: 2
Просмотров: 1217
Последний ответ 20.03.2016, 18:23:43
от platonische
Новый метод insertObject

Автор spirit1086

Ответов: 2
Просмотров: 1372
Последний ответ 01.08.2015, 12:25:24
от spirit1086
Модуль С выводом данных ИЗ таблицы

Автор baskethome

Ответов: 21
Просмотров: 2533
Последний ответ 22.01.2015, 23:10:48
от Fedor Vlasenko