Новости Joomla

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

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

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

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

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

Читать статью на Хабре.

@joomlafeed

🏆 Открыто голосование за 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 Гость просматривают эту тему.
  • 11 Ответов
  • 3665 Просмотров
*

alxcube

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
JFactory::getUser($id); fatal error
« : 01.08.2013, 04:14:33 »
Всем привет! Такая штука: пробую в админке использовать JFactory::getUser($id) -- и вылетает fatal error. Собственно, дело даже не в этом. Пробовал JUser::getInatsnce($id) -- то же самое. Пробовал даже $user = JTable::getInstance('User', 'Jtable'); $user->load($id); -- все равно fatal error. Потому что Jtable::getInstance не возвращает объект таблицы. Ошибка вылетает при попытке того самого load(). Просто не возвращает getInstance нужную таблицу. И не могу понять в чем дело. Возможно, кто-то сталкивался? Буду благодарен за помощь. Я-то через запросы к базе получаю то, что нужно, но неприятно, что так деревянно все получается)
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Re: JFactory::getUser($id); fatal error
« Ответ #1 : 01.08.2013, 09:19:29 »
Всем привет! Такая штука: пробую в админке использовать JFactory::getUser($id) -- и вылетает fatal error. Собственно, дело даже не в этом. Пробовал JUser::getInatsnce($id) -- то же самое. Пробовал даже $user = JTable::getInstance('User', 'Jtable'); $user->load($id); -- все равно fatal error. Потому что Jtable::getInstance не возвращает объект таблицы. Ошибка вылетает при попытке того самого load(). Просто не возвращает getInstance нужную таблицу. И не могу понять в чем дело. Возможно, кто-то сталкивался? Буду благодарен за помощь. Я-то через запросы к базе получаю то, что нужно, но неприятно, что так деревянно все получается)
Для начала посоветую прочитать вот это и скопирастить код для проверки.
Проверьте что у Вас содержится в переменной $id.

И вообще, что за ошибка. В студию весь текст ошибки. Покажите код в котором вызываете. И т.п.
*

alxcube

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: JFactory::getUser($id); fatal error
« Ответ #2 : 01.08.2013, 11:39:44 »
Для начала посоветую прочитать вот это и скопирастить код для проверки.
Проверьте что у Вас содержится в переменной $id.

И вообще, что за ошибка. В студию весь текст ошибки. Покажите код в котором вызываете. И т.п.

Та с jdatabase я хорошо знаком )

ошибка такая: Fatal error: Call to a member function load() on a non-object in .../libraries/joomla/user/user.php on line 887

$id я просто привел в пример. вообще, вызываю в модели таким путем:

Код
$user = JFactory::getUser($payment->user_id); 
$payment -- объект класса, наследующего JTable;
Код
$payment->user_id;
это целочисельное свойство. суть не во всем этом. я и указывал тип при передаче, и просто вбивал вручную id существующего пользователя... просто говорю: jtable::getinstance('user','JTable') не возвращает объект
*

prometheus

  • Захожу иногда
  • 84
  • 7 / 0
Re: JFactory::getUser($id); fatal error
« Ответ #3 : 01.08.2013, 14:06:23 »
Может у тебя с таблицей что-то не так: или поле переименовано или сама таблица или префикс.
*

alxcube

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: JFactory::getUser($id); fatal error
« Ответ #4 : 01.08.2013, 15:54:01 »
Может у тебя с таблицей что-то не так: или поле переименовано или сама таблица или префикс.
да не, таблица стандартная #__users же. да и без агрументов возвращает нормально текущего пользователя
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Re: JFactory::getUser($id); fatal error
« Ответ #5 : 01.08.2013, 15:57:45 »
Ну дык var_dump($payment) и смотрим, инициализируется ли user_id и вообще что происходит с этим объектом.
*

alxcube

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: JFactory::getUser($id); fatal error
« Ответ #6 : 01.08.2013, 19:33:27 »
Ну дык var_dump($payment) и смотрим, инициализируется ли user_id и вообще что происходит с этим объектом.
инициализируется. с ней все нормально. я ж говорю, что пробовал просто вручную вводить id существующего пользователя -- все то же самое.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: JFactory::getUser($id); fatal error
« Ответ #7 : 01.08.2013, 20:08:13 »
Хм, а почему бы не посмотреть на все это безобразие в отладке?
*

alxcube

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: JFactory::getUser($id); fatal error
« Ответ #8 : 02.08.2013, 16:09:23 »
Хм, а почему бы не посмотреть на все это безобразие в отладке?
А как отлаживать php, ктоме print_r ? ) буду благодарен за совет )
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Re: JFactory::getUser($id); fatal error
« Ответ #9 : 02.08.2013, 20:20:45 »
А как отлаживать php, ктоме print_r ? ) буду благодарен за совет )
В админке включить отображение ошибок + проврить наличие в шаблоне позиции debug (обычно под сайтом). Ну а вместо print_r мне лично удобнее юзать var_dump + Xdebug
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: JFactory::getUser($id); fatal error
« Ответ #10 : 02.08.2013, 21:45:04 »
где в админке это не работает. Опишите подробно, что вы делаете
*

alxcube

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Re: JFactory::getUser($id); fatal error
« Ответ #11 : 05.08.2013, 12:39:08 »
где в админке это не работает. Опишите подробно, что вы делаете
Это модель, наследует JModelAdmin. Выполняет проверки, записывает данные в базу через класс таблички, после чего отправляет пользователю на почту уведомление. И вот когда я пытаюсь получить пользователя по айдишнику, мне выбрасывает fatal error, как я уже выше писал: JTable::getInstance('User', 'JTable'); не возвращает инстанцию таблицы, и fatal error вылетает при попытке на этом объекте выполнить метод load()

В модели такой код:

Код
 public function save($data) {
            $payment = $this->getTable();
            $payment->load($data['payment_id'] ? $data['payment_id'] : JFactory::getApplication()->input->getInt('payment_id', 0));
            $old_state = $payment->state;
            
            if (!parent::save($data)) {
                return FALSE;
            };
            
            if ($data['state'] == 1 && $old_state == 0) {
                $this->_notifyUser($payment);
            }
            
            return TRUE;
            
        }
В _notifyUser я пытался получить пользователя через JFactory::getUser($payment->user_id), через JUser::getInstance($payment->user_id), но тщетно )

В итоге получаю пользователя так:

Код
$db = JFactory::getDbo();
            $query = "SELECT name, username, email, params FROM #__users WHERE id = " . $payment->user_id;
            $db->setQuery($query);
            $user = $db->loadObject();
            $params = new JRegistry();
            $params->loadString($user->params);
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Fatal error: Call to undefined method UsersModelLogin::store()

Автор jservice

Ответов: 37
Просмотров: 9903
Последний ответ 17.02.2015, 15:41:54
от kolio
Fatal error: Cannot redeclare showQuestions() (previously declared in

Автор sergvlask

Ответов: 2
Просмотров: 2003
Последний ответ 01.12.2013, 13:24:42
от sergvlask
AJAX запрос к функции контроллера и JFactory::getUser

Автор kathu

Ответов: 12
Просмотров: 3554
Последний ответ 10.09.2013, 23:27:24
от Fedor Vlasenko