Новости Joomla

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+)

Новый способ добавления и рендера полей в Joomla Form - метод renderControlFields() (Joomla 5.3+)

При отображении форм компонента в админке раньше разработчикам нужно было описывать скрытые поля в лейаутах. И выглядело это так:

<?php // Это файл в /layouts/components/com_component/your_layout.php ?> <input type="hidden" name="task" value=""> <input type="hidden" name="return" value="<?php echo $input->getBase64('return'); ?>"> <input type="hidden" name="forcedLanguage" value="<?php echo $input->get('forcedLanguage', '', 'cmd'); ?>"> <?php echo HTMLHelper::_('form.token'); ?>

Начиная с Joomla 5.3 добавлен новый способ добавления таких полей (их называют control fields) - программно. И теперь это можно сделать просто в Controller / View.

<?php // В Controller/View добавляем поля $this->form ->addControlField('task', '') ->addControlField('return', $input->getBase64('return', '')) ->addControlField('forcedLanguage', $forcedLanguage);

А в layout'е просто используем метод

renderControlFields()

<?php // В layout формы echo $this->form->renderControlFields();

Многие компоненты ядра уже используют этот подход. Соответствующий PR был принят в Joomla 5.3 осенью 2024г.

Смотреть Pull Request

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

eugenex

  • Захожу иногда
  • 51
  • 0 / 0
В итоге в ссылке оказывается только слэш и она ведёт на главную.
ссылки формируются в /temlates/имя_шаблона/html/com_content/category/blog_item.php таким образом:

Код: php
JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid, $this->item->language));

где ContentHelperRoute::getArticleRoute возвращает
Цитировать
index.php?option=com_content&view=article&id=41:lampy-lajt-2017-lighting&catid=8&Itemid=101

У всех остальных новостей в ленте, имеющих правильные ссылки Itemid=275. Если ввести в браузере ссылку на последнюю новость, исправив Itemid c 101 на 275, то ссылка работает.

Откуда могло появиться  это неправильное Itemid и где оно вообще задаётся? Или, по крайней мере, где оно в базе. Сейчас я могу его только непосредственно при выводе в шаблоне подменить.


Itemid - это привязка к пункту меню. 101 это пункт "Главная", 275 это "Новости".
« Последнее редактирование: 20.01.2017, 12:28:36 от eugenex »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Новости

Автор studenttnp

Ответов: 1
Просмотров: 1804
Последний ответ 22.06.2022, 15:44:06
от marksetter
Найти где внедряется ссылка

Автор archin_lin

Ответов: 1
Просмотров: 949
Последний ответ 13.02.2019, 18:16:59
от voland
Категория как ссылка на модуль

Автор PyCu4

Ответов: 4
Просмотров: 1237
Последний ответ 23.01.2019, 13:57:08
от PyCu4
Как запретить загрузку изображений при добавлении новости через сайт

Автор jonnyzero

Ответов: 2
Просмотров: 1996
Последний ответ 13.02.2018, 19:05:38
от kasper9820
j2.5 Заголовок модуля как ссылка

Автор maccamset

Ответов: 24
Просмотров: 11027
Последний ответ 17.08.2016, 12:49:37
от step-di