Warning: Declaration of NameControllerForms::getModel($name = 'form', $prefix = '...') should be compatible with Joomla\CMS\MVC\Controller\BaseController::getModel($name = '', $prefix = '', $config = Array) in /administrator/components/NAME/controllers/forms.php on line 8
Joomla:
Полный текст ошибки Joomla:
Warning: session_start(): Failed to read session data: user (path: /var/www/SITE.ru/tmp) in /var/www/SITE.ru/www/libraries/joomla/session/handler/native.php on line 260
Error: Failed to start application: Failed to start the session
Joomla проблема с сохранением даты.
Столкнулся с проблемой, при сохранении элемента, его время не совпадало с текущим на 3 часа. При этом с датой создания все было в порядке.
Т.е. при создании новости, например, в 10:00 часов, она сохранялась с верной датой и временем, но если ее тот же сохранить еще раз, то в дате изменения уже отображалось как 13:00
Работа с полями формы в Joomla 3
Нужно было получить значения полей формы(XML схеме). Например, models/forms/item.xml
Итак, getFieldset модели возвращает объект /libraries/src/Form/FormField.php у которого пачка защищенных методов. А значения нужно получать через магической метод __get, которое в свою очередь вызывает одноименный метод. Т.е. например, $field->title вызывает getTitle().
protected function _getFields() { $oInput = JFactory::getApplication()->input; $data = $oInput->post->get('jform', array(), 'array'); $form = $this->getForm($data, false); foreach($form->getFieldset('details') as $field) { echo $field->type. '<br />'; //echo $field->label. '<br />'; echo $field->fieldname. '<br />'; echo $field->title. '<br />'; echo '<hr />'; }
Генерация метатегов
Пример обрезания всего лишнего в метатегах. Удаление всего кроме такса (html тегов и плейсхолдеров).
Проблема в том, что если попробовать выдать языковую константу через JText::_ из другого компонента или модуля, то Joomla локализацию не находит.
Для вызова нужно сначала подключить его языковой файл.
Довольна давно столкнулся с проблемой, что ссылки сделанные через JRoute::_ не на страницах самого компонента теряли ЧПУ, т.е. вместо /blog/29 выводятся как /component/blog/29
Решение: нужно добавлять ссылкам Itemid=, равен он должен быть ID пункта меню.
Т.е.: JRoute::_('index.php?option=com_blog&view=item&Itemid=108&id='.$oRow->id);
На сайте под управлением Joomla 3, столкнулся с проблемой - при переходе на несуществующую страницу, вместо кода 404 и соответствующей страницы, выдавалось содержимое главная с кодом 200.
Контроллер для Ajax запроса в Joomla 3
Самый простой вариант, работать с ajax в Joomla, это обратиться к контроллеру компонента.
Пример такого запроса /index.php?option=com_test&task=ajax.method&tmpl=component (Подробнее про &tmpl=component).
При этом сделать это можно как из другого компонента, так и модуля:
let response = await fetch("/index.php?option=com_test&task=ajax.method&tmpl=component&id=123"); if (response.ok) { let json = await response.json(); } else { alert("Ошибка HTTP: " + response.status); }
Пример того, как а Joomla 3 проверить, что пользователь авторизован и к каким группам он относиться.