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

holdstred

  • Новичок
  • 3
  • 0 / 0
Не работает CSS
« : 12.06.2014, 18:56:06 »
Пытаюсь сделать свой шаблон.Не подключаются стили

index.php
Код
<?php defined( '_JEXEC' ) or die; ?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru-ru" lang="ru-ru" dir="ltr">

<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="/templates/system/css/system.css" type="text/css" />
<link rel="stylesheet" href="/templates/system/css/general.css" type="text/css" />
<link rel="stylesheet" href="/templates/<?php echo $this->template ?>/css/template.css" type="text/css" />
<?php
if($this->countModules('right') == 0) $contentwidth = "100";
if($this->countModules('right') == 1) $contentwidth = "80";

?>
</head>
<body>
<div id="page">
<div id="top">
<div id="logo">
<h1><?php echo $app->getCfg('sitename'); ?></h1>
</div>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
</div><!-- конец блока top -->
<?php if($this->countModules('user2')) : ?>
    <div id="user2 ">
     <jdoc:include type="modules" name="user2" style="xhtml" />
     </div>
     <?php endif; ?>
     <?php if($this->countModules('header')) : ?>
    <div id="header ">
     <jdoc:include type="modules" name="header" style="xhtml" />
     </div>
     <?php endif; ?>
     <div id="content<?php echo $contentwidth; ?>">
     <jdoc:include type="message" />
     <jdoc:include type="component" style="xhtml" />
    </div> <!--конец блока контента-->
    <?php if($this->countModules('right')) : ?>
    <div id="rigth">
    <jdoc:include type="modules" name="right" style="xhtml" />
    </div>
    <div id="footer">
    </div>
<?php endif; ?>
</div><!--конец блока page-->
</body><!--конец блока body -->
</html><!--конец кода-->   

Файл template.css находится в папке CSS.
Где ошибка, второй день голову ломаю
*

fbr

  • Завсегдатай
  • 1670
  • 206 / 7
Re: Не работает CSS
« Ответ #1 : 12.06.2014, 20:12:17 »
может здесь
<?php echo $this->template ?>/css/template.css"
поставьте после template ; (точку с запятой)
*

holdstred

  • Новичок
  • 3
  • 0 / 0
Re: Не работает CSS
« Ответ #2 : 12.06.2014, 21:39:06 »
Не помогло :(
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Не работает CSS
« Ответ #3 : 12.06.2014, 23:11:09 »
Что по факту выводится во фронт? Ctrl+U
Возможно, надо убрать / перед templates/ :
Код: php
<link rel="stylesheet" href="templates/<?php echo $this->template; ?>/css/template.css" type="text/css" />

Либо, если действительно не работает $this->template, попробуйте:
Код: php
<link rel="stylesheet" href="templates/<?php echo JFactory::getApplication()->getTemplate(); ?>/css/template.css" type="text/css" />
*

Taatshi

  • Гуру
  • 5258
  • 481 / 2
  • Верстаем и кодим. Обращайтесь ;)
Re: Не работает CSS
« Ответ #4 : 13.06.2014, 00:00:17 »
Код
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/template.css" type="text/css" />
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

holdstred

  • Новичок
  • 3
  • 0 / 0
Re: Не работает CSS
« Ответ #5 : 14.06.2014, 20:27:29 »
Код
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/template.css" type="text/css" />

Помогло ^-^
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не работает правильно сайт на хосте

Автор Алексей Лоскутов

Ответов: 6
Просмотров: 1800
Последний ответ 21.05.2020, 20:23:57
от xpank
Некорректро работает Lightbox в widgetkit, сдвиг вправо при открытии Lightbox и листании фотографий

Автор twins717

Ответов: 2
Просмотров: 1825
Последний ответ 31.03.2020, 08:13:46
от sivers
Не работает свойство font-weight

Автор dm-krv

Ответов: 11
Просмотров: 3832
Последний ответ 31.08.2018, 09:16:26
от dm-krv
@media screen - не всегда работает

Автор darkghost

Ответов: 6
Просмотров: 9045
Последний ответ 01.06.2017, 12:08:11
от dmitry_stas
Не работает CSS в материалах и модулях

Автор smokerock

Ответов: 1
Просмотров: 1371
Последний ответ 28.02.2017, 15:53:36
от Shustry