Новости 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 Гость просматривают эту тему.
  • 23 Ответов
  • 1898 Просмотров
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Как передать переменную из одного вида редактирования записи в другой вид. Так же необходима кнопка перехода на другой вид.

Поясню.
Есть виды Клиент/Клиенты и Заказ/Заказы. Элемент заказ содержит поле КЛИЕНТ_ИД

Как передать из вида Клиент, где мы знаем наш текущей ИД в вид ЗАКАЗ (новый заказ без ИД заказа).

Мысль такая:
Создаю кнопку в виде
Код
JToolBarHelper::custom( 'customer.addorder', '', '','COM_TURISM_BUTTON_ADD_ORDER' );

Создаю в контроллере task "addorder"
Вопрос как здесь получить ИД?

Здесь же загоняю ИД в сессию
Код
JFactory::getApplication()->setUserState('клиент ИД', 'значение');
 

в виде Заказ проверяю значение в моделе в функции getItem и если есть
Код
JFactory::getApplication()->getUserState('клиент ИД');
то в item подменяю значение

« Последнее редактирование: 23.03.2016, 16:46:49 от platonische »
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Передача переменной между видами
« Ответ #1 : 22.03.2016, 16:16:29 »
Вопрос как здесь получить ИД?

Код: php
<?php $id = JRequest::getInt('id'); ?>
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Передача переменной между видами
« Ответ #2 : 22.03.2016, 22:38:29 »
Спасибо! Но что-то уперся в контроллер
Что надо для того чтобы task=customer.addorder делал операции какие-то и перенаправлял на другой task=order.edit (Контроллер order)
я создал в контроллере customer функцию JToolBarHelper::custom( 'customer.addorder', '', '','COM_TURISM_BUTTON_ADD_ORDER' );
Код
protected function addorder()
{
$customer_id = JRequest::getInt('id'); // получили ИД клиента
JFactory::getApplication()->setUserState('customer_id', $customer_id); // Сделали запись в сессию
$this->setRedirect(
JRoute::_(
'index.php', false
)
);
}
Что еще надо для task? Его надо регистрироваль или как?
и правильно ли я его вызвал?
view.php вида customer
Код
JToolBarHelper::custom( 'customer.addorder', '', '','COM_TURISM_BUTTON_ADD_ORDER' );
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Передача переменной между видами
« Ответ #3 : 22.03.2016, 22:43:01 »
Видимо надо как-то определить task или недогоняю...
сменил на вот такое
Код
JToolBarHelper::cancel( 'customer.addorder', 'COM_TURISM_BUTTON_ADD_ORDER' );
и получил то что хотел, почему из JToolBarHelper::custom не отрабатывает?
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Передача переменной между видами
« Ответ #4 : 22.03.2016, 22:43:49 »
Цитировать
Что надо для того чтобы task=customer.addorder делал операции какие-то и перенаправлял на другой task=order.edit (Контроллер order)
Что значит перенаправлял? Такое невозможно. Перенаправление - это отображение уже другой страницы.

Кстати, JRequest::getInt замените на $this->input->getInt
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Передача переменной между видами
« Ответ #5 : 23.03.2016, 16:16:12 »
Что значит перенаправлял? Такое невозможно. Перенаправление - это отображение уже другой страницы.
Собственно это и надо! В форме создания клиента view=customer хочу поставить кнопку "Добавить заказ", в действия этой кнопки хочу вложить следующее:
1. Сохранение (если клиент новый)
2. Сохранение ИД клиента в сессию
3. Перенаправление на view=order (создание нового элемента - заказа)
4. Заполнение поля customer_id по значению из сессии.

По большому счету у меня это вышло с кнопкой типа cancel, но вот с кнопкой типа custom не вышло. Почему?
custom мне кажется лучше т.к. я туда иконки свои поставлю. Ну и не буду дергать лишние методы.
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Передача переменной между видами
« Ответ #6 : 23.03.2016, 16:46:26 »
Задача решена. В custom типе кнопке нужен обязательный пятый параметр, который говорит контроллеру работать со списком выбранных элементов (true) и (false) не работать со списком. Я этот параметр не указал - вот была и проблема.
Скажу что надо ставить true если кнопка выводится в виде списка и false если кнопка выводится в виде редактирования элемента
https://docs.joomla.org/Creating_a_toolbar_for_your_component
https://docs.joomla.org/JToolBarHelper/custom
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
RE: Передача переменной между видами
« Ответ #7 : 23.03.2016, 16:49:35 »
Ну с сессией я поступил чуть иначе
Контроллер customer
Спойлер
[свернуть]

Далее получаем данные в моделе order и убиваем переменную из сессии чтоб не навредила.
модель order изменили loadFormData()
Спойлер
[свернуть]
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
RE: Передача переменной между видами
« Ответ #8 : 23.03.2016, 17:03:16 »
Код: php
$this->setRedirect(
    JRoute::_('index.php?option=com_turism&task=order.edit', false
);

Ну бред же - перенаправлять на другой контроллер. Только ради того, чтобы вызвать модель order? Сделайте всё в этом же addorder(), зачем нужно вызывать другой контроллер?
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
RE: Передача переменной между видами
« Ответ #9 : 23.03.2016, 17:33:58 »
Код: php
$this->setRedirect(
    JRoute::_('index.php?option=com_turism&task=order.edit', false
);

Ну бред же - перенаправлять на другой контроллер. Только ради того, чтобы вызвать модель order? Сделайте всё в этом же addorder(), зачем нужно вызывать другой контроллер?

Не понял... Имеешь ввиду вот так
Код: php
$this->setRedirect(
    JRoute::_('index.php?option=com_turism&view=order&layout=edit', false
);

Если нет, то я не понимаю что можно по-другому.
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
RE: Передача переменной между видами
« Ответ #10 : 23.03.2016, 17:35:58 »
ААА вон вы чего. Я не знаю же данных в этом виде для заказа да и не нужны они мне в виде "Клиент". Нужна возможность быстро перейти на добавление клиенту заказа.
По кнопе уходим в добавление заказа и там создаем.
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
RE: Передача переменной между видами
« Ответ #12 : 24.03.2016, 10:24:37 »
ААА вон вы чего. Я не знаю же данных в этом виде для заказа да и не нужны они мне в виде "Клиент". Нужна возможность быстро перейти на добавление клиенту заказа.
По кнопе уходим в добавление заказа и там создаем.
Причём тут вид? Куда переходить? Вы что, после перехода что-то показываете клиенту? Нет. Вы по моему запутались в логике и MVC. Или это я не понимаю логики работы Вашего расширения.
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
RE: Передача переменной между видами
« Ответ #13 : 24.03.2016, 16:53:39 »
Это админка.
Есть виды... Клиенты, Заказы.
В заказе есть поле КЛИЕНТ_ИД и нужно выбирать его при создании заказа (ЧЕРЕЗ админку)
Я хочу лишь чтобы можно было перейти из вида КЛИЕНТ в вид ЗАКАЗ, что бы при этом оператору не нужно было искать клиента для выбора его в заказе.
Поэтому в виде КЛИЕНТ я сделал кнопку "ДОБАВИТЬ ЗАКАЗ" постал на контроллер клиент.добавитьЗаказ там присвоил переменной в сессии значение КЛИЕНТ_ИД и сделал редирект на контроллер ЗАКАЗ.edit в моделе заказа где получаем данные для заполнения формы прочитал сессию, присвоил полю значение, удалил переменную сессии.

У меня работает, и это то что я хотел. Вопрос конечно правильно ли я это сделал?
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Передача переменной между видами
« Ответ #14 : 24.03.2016, 17:13:59 »
Цитировать
и сделал редирект на контроллер ЗАКАЗ.edit в моделе заказа
Редирект используется только в одном случае - перенаправить пользователя на нужную страницу. Он не используется для вызова другого контроллера и другой модели.

Что Вам мешает в методе addorder() контроллера сделать все действия без вызова другого контроллера?
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Передача переменной между видами
« Ответ #15 : 24.03.2016, 17:21:21 »
Что Вам мешает в методе addorder() контроллера сделать все действия без вызова другого контроллера?
Отсутствие полей заказа. Заказов у клиента не 1.
Т.е. поля заказа клиенту не нужны всегда... Нужны лишь тогда когда создаем ему заказ.
Конечно если вставить еще одну форму со всеми ОБЯЗАТЕЛЬНЫМИ полями заказа и заполнить их, скрыть форму, если она не нужна, например через элементарный JS+CSS может быть соглашусь...
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
RE: Передача переменной между видами
« Ответ #16 : 24.03.2016, 17:39:41 »
Все равно не понял: в любом случае вам нужен ID клиента, правильно? Если он уже есть в $_REQUEST, то сразу втавить в форму, в противном случае - выбрать из списка, и все это делать только в виде ЗАКАЗ.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
RE: Передача переменной между видами
« Ответ #17 : 24.03.2016, 18:25:53 »
Все равно не понял: в любом случае вам нужен ID клиента, правильно? Если он уже есть в $_REQUEST, то сразу втавить в форму, в противном случае - выбрать из списка, и все это делать только в виде ЗАКАЗ.
Да чего непонятного? Во первых я решил что надо. Во вторых ДВА ВИДА а не один. ВИД КЛИЕНТ и ВИД ЗАКАЗ.
Создаем КЛИЕНТА - хорошо
Создаем ЗАКАЗ -хорошо, но при создании надо указать клиента - выбрать.
Так вот я добавил функцию создания ЗАКАЗА из вида КЛИЕНТ с передачей ИД КЛИЕНТА а не ЗАКАЗА
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
RE: Передача переменной между видами
« Ответ #18 : 24.03.2016, 20:45:05 »
ok, что у Вас происходит после task=order.edit ? На какой вид Вы попадаете?
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
RE: Передача переменной между видами
« Ответ #19 : 24.03.2016, 21:30:37 »
Вид order
layout - edit
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
RE: Передача переменной между видами
« Ответ #20 : 24.03.2016, 21:45:16 »
блин... неужели так запутанно все понимается?

пример. Чтобы создать заказ для нового клиента оператор должен:
1. view=customer&layout=edit - создать клиента
2. перейти в вид view=orders
3. view=order&layout=edit - создать заказ
4. выбрать клиента в форме заказа
5. Заполнить другие поля.

Я хотел сделать и сделал так:
1. view=customer&layout=edit - создать клиента
2. переход по кнопке customer.addorder в view=order&layout=edit - создается заказ с заполненным полем клиента
3. Заполнить другие поля.

Всё и для этого я использовал сессию для передачи КЛИЕНТ_ИД
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
RE: Передача переменной между видами
« Ответ #21 : 24.03.2016, 21:50:30 »
Теперь ясно! Ну тогда конечно правильнее делать
Код: php
$this->setRedirect(
    JRoute::_('index.php?option=com_turism&view=order&layout=edit', false
);
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
RE: Передача переменной между видами
« Ответ #22 : 24.03.2016, 22:34:29 »
Всё и для этого я использовал сессию для передачи КЛИЕНТ_ИД
Только зачем использовать сессию для этого не понятно!
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Передача переменной между видами
« Ответ #23 : 24.03.2016, 23:10:47 »
Понятно, ваша задача очень специфическая. Сессия не нужна
Код: php-brief
$id=$model->getState($this->getName().'.id',$table->$pkName);
$this->setRedirect(
    JRoute::_('index.php?option=com_turism&view=order&layout=edit&id='.$id, false
);
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[РЕШЕНО] Дублирование при создании

Автор platonische

Ответов: 7
Просмотров: 1249
Последний ответ 12.02.2021, 11:24:26
от platonische
[РЕШЕНО] onChange в админке на field modal

Автор platonische

Ответов: 1
Просмотров: 610
Последний ответ 30.01.2021, 16:40:45
от platonische
Почему id не назначается переменной?

Автор borro

Ответов: 3
Просмотров: 858
Последний ответ 29.06.2020, 12:59:51
от borro
Доступ к переменной модели из модуля

Автор platonische

Ответов: 18
Просмотров: 2387
Последний ответ 11.01.2020, 22:21:42
от robert
[РЕШЕНО] Сохранение значений полей добавленных динамически элементу

Автор platonische

Ответов: 30
Просмотров: 3354
Последний ответ 10.11.2019, 15:42:33
от platonische