simplexml_load_string('<field/>'),JDate::now());
Чтобы создать объкт поля с датой, Вам надо XML прописывать непосредсвенно в объект SimpleXML а его вставлять в метод SETUP
Сам же XML нужно создавать полностью как указано в доках для поля <field type='calendar' name='' forma='' >
т.е. если Вы атрибут для поля не укажите в XML то будет ошибка, даже если Вам это поле потом переопределять придётся.
Это декларативный подход или это как то еще называется?
И в чем проблема то?
Да в том что постоянно нужно какие то коды копировать. Там нельзя написать $field = new FormField; $field->type = 'calendar'; Тут автоподстановка кода происходит, типизация, IDE подсказывает какие поля для заполнения данными нужно использовать. На дворе 2024 год, а мы всё еще вставляем код через TXT с парсингом.
Это чтобы сделать своё поле? А почему просто не собрать его через SimpleXMLElement
Ну Вы либо его прописываете в XML файле, либо в коде нужно писать такую дичь. По Вашему собирая его в SimpleXMLElement это объектный подход?
Когда находишься вне контекста - вообще не понятно о чём речь (((
Условно Вы создаете плагин поля. чтобы вывести особое поле, для него создаёте папку FIELDS в папке поля плагина. Т.е. Ваш плагин поля выводит поле не те что есть в списке Joomla а какое то новое: например табличку. Вы в папке fields создаете файл поля для таблички и в нем создёте класс наследуемый от FieldForm. У этого класса есть метод getInput(); который возвращает рендер поля так вот этот рендер вызывается 2 раза при открытии страницы. https://github.com/joomla/joomla-cms/pull/37472 Там в ядре надо исправить $fields = FieldsHelper::getFields($context, $item, $displayType); на $fields = $item->jcfields; и будет вызываться 1 раз. Т.е. рендер вызывается при вызове FieldsHelper::getFields($context, $item, $displayType); А этот метод вызывается 2 раза.
Полагаю двойной вызов там не просто так был сделан. И да на Joomla 5 это не пойдет. Да и новый триггер я не уверен что нужен ибо есть поддержка layouts
Тригеры нужны для того чтобы получить вызов когда произойдут все вызовы тригеров для статьи. т.е. у статьи вызываются тригеры для каждого поля в отдельности. А я добавил тригер который будет вызыватся после всех тригеров . Изза того что тригеры полей могут вызыватся в любом порядке , нужен результирующий вызов, в который будут отправлены все поля массивом. Например подсчитать итоговую сумму.
Один плагин поля не должен иметь возможность менять данные другого поля. Это не правильно по ряду причин. Чтоьы менять все поля есть контентый и системные плагины. Котлеты отдельно мухи отдельно. И да не стоит пихать добалвение триггера и фикс в один PR.
Пихать не стоит, согласен. я тогда был зелёным когда создавал этот PR.
Отмени PR создавй новый. Я свой первый раз 5 переделылвал.
Почему отменять? разве удалить тригера будет не достаточно?
Хз. Иногда лучше начать с начала. И еще. We need to create this plugin in the /plugins/fields/newmyfield folder with the class inherited from Ни кто ради теста создавать плагин не будет. Лучше приложить тестовый плагин.
Вот тут тоже не понятно. Насколько я помню (полями очень давно не пользуюсь ибо это блаж) то value - это рендер значние а rawvalue исхожное, зачем контент не понятно.
Content это рендер, а поле value это глупое название. из этого названия не понятно что в этом поле. Точнее понятно но оно не является тем чем называется
ну там не надо ради теста создавать новый плагин, просто и существующий из стандартных можно добавить изменения для теста спасибо за замечания исправлю
Это тоже надо прояснять.
Прочитай как тестируются патчи. Это делаеться в админке нажатием кнопки. Лезть в файлы тоже не будут. Потом еще забудешь.
А кстати, где почитать?
https://docs.joomla.org/Testing_Joomla!_patches
Обсуждают сегодня