Новости Joomla

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

В процессе работы с Joomla бывает необходимо работать с пользовательским интерфейсом более тонко, чем обычно. Все формы Joomla состоят из стандартных полей, содержанием, стилем отображения, состоянием (включено/выключено, доступно для редактирования или нет и т.д.) можно управлять с помощью плагинов. Да и для нестандартных проектов хорошей практикой является создание одного системного или нескольких плагинов групп "под проект", в которых храниться весь "нестандарт".

В этой статье описаны все триггеры, которые вызываются через Event Dispatcher из administrator/components/com_fields/src/Helper/FieldsHelper.php, с привязкой к жизненному циклу (порядку этапов работы запроса), аргументам, изменяемым данным и дальнейшему распространению по Joomla. Это поможет вам работать с Joomla свободнее и не опасаясь при этом потерять изменения при очередном обновлении движка.

Подходы, описанные в статье, полезны в тех случаях, когда вы работаете с данными в com_fields - механизме создания и редактирования пользовательских полей ядра Joomla и при использовании FieldsHelper. Многие сторонние компоненты не используют эту возможность, поэтому данная статья будет полезна лишь частично.

🏆 Открыто голосование за Joomla в премии CMS Critic People’s Choice Awards 2025

🏆 Открыто голосование за Joomla в  премии CMS Critic People’s Choice Awards 2025

🗓 Голосование продлится до 27 февраля 2026 года.

👩‍💻 Проголосовать! 👩‍💻

Номинации, в которых можно проголосовать за Joomla:
⭐️ Best Free CMS
⭐️ Best Open Source CMS
⭐️ Best Enterprise CMS

Также в номинации Best e-Commerce Solution участвуют компоненты интернет-магазинов для Joomla:
⭐️ HikaShop
⭐️ Virtuemart

В номинации Best Website Builder оказались:
⭐️ YooTheme
⭐️ SP Page Builder

Что такое CMS Critic Awards?
С 2012 года премия CMS Critic Awards занимает особое место в сообществе систем управления контентом (CMS). Это единственный в своем роде сайт, который составляет рейтинг системы управления контентом и связанных с ними решений на рынке — от малого до крупного и подчеркивает их инновации и услуги.

Каждый год награда CMS Critic Awards присуждается одному победителю в различных отраслевых категориях, таких как: «Лучшая облачная CMS», «Лучший DXP», «Лучшая Headless CMS и других. Затем результаты оглашаются через СМИ вместе с выбором редакции CMS Critic.
В этом году премия вернулась к своим традициям и только TOP-5 движков по количеству номинаций попали в 2-й этап - голосование.

@joomlafeed

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

Dram

  • Захожу иногда
  • 211
  • 1 / 0
Есть сайт на Joomla 3.10 под нее написан самописный компонент (не мной). Есть желание перейти с php 7.4 на 8.2. Взял тестовый серв, перенес сайт. На фронте вроде без ошибок, все работает. Сайм функционал Joomla версии  3.10 тоже стабильно пашет под PHP 8.2, но вот с самописным компонентом есть ошибки. Некоторые смог исправить сам, а для других не хватает знаний, прошу помочь.

Первая ошибка - при попытки сохранить материал получаю ошибку

Я так понимаю в конструктор класса Тайбл приходит 1 значение, а нужно три. Вот конструктор родного класса

Я предполагаю, что проблема в модели (конкретно в конструкторе) самописного компонента (но возможно ошибаюсь). Логика такая - раз сохранение и редактирование родных материалов джумлы работает. Значит дело не в классе ядра, а в самописе.

Как это выяснить?

P.S. я проверил - в главный контструктор все три значения приходят и мне не понятно чего он ругается что пришло одно вместо трех

328 строка это уже не конструктор
*

sivers

  • Живу я здесь
  • 2606
  • 361 / 0
Re: Ошибки при переходе на PHP 8.2
« Ответ #1 : 30.12.2022, 10:39:10 »
1 аргумент в функции должен быть
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Dram

  • Захожу иногда
  • 211
  • 1 / 0
Re: Ошибки при переходе на PHP 8.2
« Ответ #2 : 30.12.2022, 10:43:43 »
1 аргумент в функции должен быть

Простите, ничего не понял - в какой функции один аргумент? Все таки нужно менять ядро? Я что-то нутром чую что дело в самописном компоненте.
*

sivers

  • Живу я здесь
  • 2606
  • 361 / 0
Re: Ошибки при переходе на PHP 8.2
« Ответ #3 : 30.12.2022, 10:52:54 »
Код
return new $tableClass($db);
вот тут передается один аргумент конструктору (в скобках), при этом
Код
public function __construct($table, $key, $db)
вызываемый конструктор ожидает 3 аргумента

соответственно, либо передавать надо 3, либо в конструкторе сделать прием  только 1 аргумента (возможно, придется и сам конструктор немного переделать в этом случае)
менять лучше в той части, которая относится к самописному компоненту, а не в ядре Joomla.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Dram

  • Захожу иногда
  • 211
  • 1 / 0
Re: Ошибки при переходе на PHP 8.2
« Ответ #4 : 30.12.2022, 12:39:14 »
вызываемый конструктор ожидает 3 аргумента
Так это один и тот же файл - стандартный класс Joomla 3, можете сами его посмотреть по пути /libraries/src/Table/Table.php

разве могли они сами так накосячить?
А конструктор сапомиса наследуется вообще без параметров
Код
	function __construct()
{
parent::__construct();

        $this->dir = JPATH_ROOT.'/images/vuz';
$array = JRequest::getVar('cid',  0, '', 'array');
$this->setId((int)$array[0]);
}
« Последнее редактирование: 30.12.2022, 12:47:12 от Dram »
*

sivers

  • Живу я здесь
  • 2606
  • 361 / 0
Re: Ошибки при переходе на PHP 8.2
« Ответ #5 : 30.12.2022, 12:47:22 »
Тогда ищите в кастомном компоненте неправильно использование тех методов. Начните с файлов компонента, перечисленных в сообщении об ошибке.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Dram

  • Захожу иногда
  • 211
  • 1 / 0
Re: Ошибки при переходе на PHP 8.2
« Ответ #6 : 30.12.2022, 13:44:32 »
Я нашел строку, дальше которой запрос не идет.
Цитировать
$row =& $this->getTable();
Убирание апмеданса проблему не решает. Это строка в методе store() который как раз сохраняет данные в админке.
Этот метод в классе самописаного компонента
Код
<?php

defined('_JEXEC') or die('Restricted access');

jimport('joomla.application.component.model');

class VuzModelItem extends JModelLegacy
{
    var $dir = null;

function __construct()
{
parent::__construct();

        $this->dir = JPATH_ROOT.'/images/vuz';
$array = JRequest::getVar('cid',  0, '', 'array');
$this->setId((int)$array[0]);
}

...................

function store()
{
$row =& $this->getTable();
$data = JRequest::get('post');

$fields = JRequest::getVar('fields', '', 'post', 'array', JREQUEST_ALLOWRAW);
        $statistics = JRequest::getVar('statistics', '', 'post', 'array', JREQUEST_ALLOWRAW);
$data['text'] = JRequest::getVar('text', '', 'post', 'string', JREQUEST_ALLOWRAW);

if(empty($data['name']))
{

.......................

Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Сохранить не удалось из-за ошибки: Содержимое превышает допустимые лимиты

Автор R31rus

Ответов: 21
Просмотров: 5761
Последний ответ 27.03.2024, 16:46:13
от Gorilla
jos-Error: Материал не найден вместо 404 ошибки

Автор bugmenot

Ответов: 4
Просмотров: 1585
Последний ответ 10.01.2023, 11:32:11
от Mick_20
Ошибка при переходе на PHP 8

Автор KingSnake

Ответов: 1
Просмотров: 1211
Последний ответ 27.12.2022, 10:35:38
от NewUsers
Сохранение авторизации пользователя при переходе на поддомен

Автор denism300

Ответов: 2
Просмотров: 1004
Последний ответ 14.11.2022, 11:35:14
от denism300
Ошибки при загрузке страниц сайта

Автор web_signal

Ответов: 3
Просмотров: 955
Последний ответ 08.11.2022, 20:26:13
от marksetter