Новости Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

👩‍💻 SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla.Компонент - менеджер цифровых проектов для Joomla! CMS. Компонент обеспечивает создание каталога цифровых проектов и предоставляет возможность скачивания, в том числе с использованием лицензионных ключей.👩‍💻 v.2.5.0. Что нового?Схемы структур данных для серверов обновлений. Теперь с SW JProjects вы может создавать сервер обновлений не только для расширений Joomla, но и свои собственные. Например, вам нужно, чтобы структура данных сервера обновлений была другая и формат должен быть, например, не XML, а JSON. Формирование структуры данных для сервера обновлений расширений Joomla вынесено в отдельный плагин. Вы можете создать свой собственный плагин и реализовать в нём нужную вам структуру данных, добавив или наоборот исключив отображаемые данные. Сервер обновлений в компоненте по-прежнему отображает информацию о списке проектов и их версиях, о конкретном проекте и его changelog.Можно выбрать схему данных сервера обновлений глобально для всего компонента, выбрать другую схему данных для категории проектов, а так же выбрать схему в каждом проекте.

Разработчикам в качестве образца можно посмотреть плагин схемы данных для Joomla в составе компонента или же плагин-образец JSON-схемы на GitHub.
Группа плагинов swjprojects. Для нужд компонента создана группа плагинов swjprojects. В частности, в этой группе находится плагин структуры данных Joomla расширений для сервера обновлений.Изменение языковых констант. Изменены некоторые языковые константы в панели администратора. Если вы делали переопределение констант - переопределите их снова.👩‍💻 Joomla 6. Внесены изменения для корректной установки и работы компонента на Joomla 6. Компонент успешно протестирован на Joomla 6-beta2.Минимальная версия Joomla - 5. Подняты минимальные системные требования: Joomla 5.0.0 и PHP 8.1.
- Страница расширения👉 Плагин-образец кастомной JSON-схемы данных для сервера обновлений на GitHub.- GitHub расширения- Документация на GitHub- Joomla Extensions Directory#joomla #расширения

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

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

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

  • Глобальный модератор
  • 7287
  • 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
Просмотров: 9575
Последний ответ 17.02.2015, 15:41:54
от kolio
Fatal error: Cannot redeclare showQuestions() (previously declared in

Автор sergvlask

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

Автор kathu

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