Новости Joomla

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

👩‍💻 Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1. Это релиз, в который включены уже проверенные изменения, но ещё очень многие исправления и улучшения ждут своей очереди. Joomla следит за качеством и безопасностью своего кода и каждое изменение должно быть успешно протестировано как минимум ещё двумя участниками сообщества. Разработка Joomla ведётся на платформе GitHub.Филипп Уолтон (Philip Walton) - один из разработчиков, кто активно вносит свой вклад в ядро Joomla. Он уже несколько месяцев посвящает свои послеполуденные часы пятницы работе с Joomla и предлагает присоединиться к нему. 📆 Пятница, 30 мая 2025, с 15:00 до 17:00 по UTC (Лондон) - с 18:00 до 20:00 по Москве.В чате Google Meet Филипп готов помочь с тестированием тем, кто будет делать это в первый раз. А так же он подготовил список лёгких Pull Request, которые можно протестировать довольно быстро. Чем больше тестов будет проведено сейчас, тем меньше ошибок вылезет потом. На данный момент 148 (уже 147 на момент написания заметки) PR на GitHub Joomla ждут тестирования.👩‍💻 Open to all. All together.Также вам поможет сделать первые шаги это видео.GitHub JoomlaДа, это вечер пятницы. Но тестирование занимает порой минут 15, а доброе дело сделано. Просто убедитесь, что разработчик чего-то не пропустил и всё работает как ожидается.#joomla #joomla6 #community

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

platonische

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

Реализую онлайн фильтр для своего компонента. В компоненте есть вид filter и он собственно и понимает/принимает все переменные в различных видах (так вышло). А модуль это лишь форма которая опрашивает компонент на предмет по каким свойствам фильтровать и какие ссылки подставлять.

Загвоздка встала в чтении переменных input в модуле. Да прочитать я их могу, но в модели компонента уже есть готовые данные (прочитанные, собранные определенным образом). Данные в моделе обрабатываются в populaState функции и выносятся в отдельную переменную и окружение(не знаю как правильно сказать) в setState().

Так вот... когда я публикую модуль в позиции LEFT - видимо еще не отрабатывает компонент и переменная пустая.
Пока вышел из положения, создав доп.функцию getПеременная() а внутри инициировал populaState и возврат переменной.

Но мне кажется это плохо... Если у кого какие мысли?

*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Может я туплю, но если в компоненте есть фильтр - значит есть форма, которая POST\GET отправляет данные в обработчик, вот эти массивы и читайте в модуле, без всяких окружений

Так вот... когда я публикую модуль в позиции LEFT - видимо еще не отрабатывает компонент и переменная пустая.
Это вообще не важно, в какой позиции публиковать модуль
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

platonische

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

1.Формы нет, есть обработка входящих параметров.
  • обработка входящих параметров напрямую
  • обработка filter_id (из меню прилетает), а уже по нему получаем все параметры

2.Если как вы говорите, форма тут вообще не причем, главное обработка параметров - она у меня есть и... не могу получить без доп.дергания функции обработки входящих параметров.
*

fsv

  • Живу я здесь
  • 2781
  • 410 / 2
Не уверен, что правильно понял вопрос. Как всегда описание максимально абстрактное... Но если суть вопроса в этом -
... в модуле.
...но в модели компонента уже есть готовые данные ...Данные в моделе обрабатываются в populaState функции
, то посмотрите (не только в этот раз), как реализован ваш вопрос в дефолтных расширениях.
Например, в mod_articles_latest/helper.php : получают инстанс модели и меняют / устанавливают ее состояние через setState . Да, в компоненте и в модуле будут разные экземпляры и разные состояния. Но ведь вам и нужны разные состояния?
Веб-разработка: заказ. Только новая разработка.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Да вообще ничего не понятно. ТС, излагайте на пальцах: мол, сделал так
Код
блаблабла
, но вместо блаблабла получил блаблабла.
Пришлось добавить
Код
блаблабла
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
А модуль это лишь форма которая опрашивает компонент на предмет по каким свойствам фильтровать и какие ссылки подставлять.
Ну если я правильно понял то...
В ListModel есть метод `getFilterForm` вот через нее в модуле форму и выводите. Ну или если нужны только значения то getActiveFilters
То бишь инициализируем модель БЕЗ ignore_request ('ignore_request' => true) в модуле и получаем форму со всем значениями.

Кстати есть мини подводный камень. Приоритетом для получения sate будет getUserState, а не get post пост параметры.
Это стоит подправить в методе. getUserStateFromRequest

А если неправильно все равно принцип тот же.
Делаете все моделе компонента, а модуле ее еще раз инициализируете и получите то что вам нужно.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Попробую еще раз написать..., но мне казалось все ясно...

итак, модель компонента JModelList
Спойлер
[свернуть]

Тоесть во время обработки входящего потока в модели компонента собрали неную переменную $this->prop_ids

в модуле хотелось сделать просто вот так
Код
        $model_filter = JModelLegacy::getInstance('filter', 'HzcatalogModel');
        $prop_ids = $model_filter->prop_ids;

Этого не вышло.

Сделал вот так:
1. Добавил метод в модель компонента
Код
public function getPropIds(){
        $this->populateState();
        return $this->prop_ids;
    }
в модуле стал обращаться к функции -> данные стали приходить.
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
В ListModel есть метод `getFilterForm` вот через нее в модуле форму и выводите. Ну или если нужны только значения то getActiveFilters
Форму генерю в ручную в самом модуле
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
в модуле хотелось сделать просто вот так
Код
        $model_filter = JModelLegacy::getInstance('filter', 'HzcatalogModel');
        $prop_ids = $model_filter->prop_ids;

Этого не вышло.
Нет, конечно.
populateState() придуман именно для заполнения состояния (state), дальнейший доступ к которому обеспечивает getState(), а вы хотите его использовать как конструктор.
Кстати, у него есть нюанс
Код
* This method should only be called once per instantiation and is designed
* to be called on the first call to the getState() method unless the model
* configuration flag to ignore the request is set.
Он не будет вызван, если __state_set === true.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
populateState() придуман именно для заполнения состояния (state), дальнейший доступ к которому обеспечивает getState(), а вы хотите его использовать как конструктор.
Просто, когда писался populaState() в нем были решены различные моменты обработки входящих данных, вот я и решил данные дополнительно отправить в переменную, чтоб потом кто-то (модуль) мог получить уже обработанные данные.

Вопрос наверное в том что экземляры класса разные, в момент когда вызывается функция из модуля и в нем не содержаться данные - это может быть объяснением...
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Еще раз - populaState() вызывается внутри getState(), и только 1 раз. Если вы, конечно, вручную не будете его вызывать.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Еще раз - populaState() вызывается внутри getState(), и только 1 раз. Если вы, конечно, вручную не будете его вызывать.
Я не понимаю что это может мне дать? Ну вынесу я обработку данных в другую функцию модели и там соберу свою переменную public $prop_ids, мне все равно придется запустить функцию в populaState или getListQuery. И при этом вы хотите сказать будет доступ (из любого места/в моем случае из модуля) к переменной, содержащей весь набор параметров?

Мой вопрос вот в чем. И по-моему я начинаю понимать, что сделано у меня примерно верно, надо только вынести обработку из populaState и запускать ее все-равно придутся.

Я не сказал одного (сам только понял): модуль публикуется лишь на одном виде компонента и мне казалось очевидным не прогонять формирование данных input два раза и в виде компонента и в модуле. Но сама суть модуля (может и ООП) в том, что модуль может быть опубликован где угодно и должен иметь свои данные (т.е. свой экземпляр). Ну и соответственно в экземпляре модуля надо запускать обработку данных заново либо выносить данные за экземпляр (session или userState).

Подскажите, на верном ли я пути?
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
самое простое - в модели (или виде) компонента объявить глобальную переменную (объект/массив) и сунуть в нее необходимые данные. А в модуле потом получить их и использовать.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
мне все равно придется запустить функцию в populaState или getListQuery
Почему?
И при этом вы хотите сказать будет доступ (из любого места/в моем случае из модуля) к переменной, содержащей весь набор параметров?
Да, если вы объявите свою переменную в констркуторе, например.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
самое простое - в модели (или виде) компонента объявить глобальную переменную (объект/массив) и сунуть в нее необходимые данные. А в модуле потом получить их и использовать.
Да, если вы объявите свою переменную в констркуторе, например.

Не понял я вас... Как объявить? я же вроде объявил  public $prop_ids; в моделе и в нее собираю все, ее и пытался запросить из модуля - результат = пустая переменная.
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Не понял я вас... Как объявить? я же вроде объявил  public $prop_ids; в моделе и в нее собираю все, ее и пытался запросить из модуля - результат = пустая переменная.

Перед первым использованием:
Код
global $prop_ids;
далее:
Код
$prop_ids = array();
.....
после этого в модуле:
Код
global $prop_ids;
print_r($prop_ids);
Компонент отрабатывает раньше модулей, поэтому глобальная переменная будет инициализирована (заполнена данными) до вызова модуля.
а public - это правило для использования внутри класса/объекта.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
@sivers
Спасибо! расжевали... использование global нормальный тон. Как-то встречал, отговорки от использования глобала.
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Как-то встречал, отговорки от использования глобала.
Да и я встречал не раз. Стараюсь лишний раз не использовать их. Но иногда это удобней и экономней в плане ресурсов.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Не понял я вас... Как объявить? я же вроде объявил  public $prop_ids; в моделе и в нее собираю все, ее и пытался запросить из модуля - результат = пустая переменная.
Ну не объявить, а заполнять. Примерно так
Код
public function __construct($config = [])
{
parent::__construct($config);
$this->prop_ids = blablabla;
}
Стараюсь лишний раз не использовать их.
Лучше вообще не использовать, геморрой еще тот.
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Счётчик полей в админке модуля

Автор zeus07

Ответов: 9
Просмотров: 826
Последний ответ 28.06.2021, 13:40:31
от zeus07
Почему id не назначается переменной?

Автор borro

Ответов: 3
Просмотров: 823
Последний ответ 29.06.2020, 12:59:51
от borro
Не занимать место под пустой вывод модуля

Автор platonische

Ответов: 11
Просмотров: 899
Последний ответ 28.04.2020, 07:53:11
от sivers
Проблема вызова модели компонента из модуля

Автор platonische

Ответов: 1
Просмотров: 737
Последний ответ 24.04.2020, 18:32:32
от platonische
Pagination компонента и данные из формы модуля

Автор platonische

Ответов: 4
Просмотров: 807
Последний ответ 29.01.2020, 11:32:43
от mardok