Новости Joomla

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

Новый способ добавления и рендера полей в 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.
// В Controller/View добавляем поля$this->form  ->addControlField('task', '')  ->addControlField('return', $input->getBase64('return', ''))  ->addControlField('forcedLanguage', $forcedLanguage);
А в layout'е просто используем метод
renderControlFields()
// В layout формыecho $this->form->renderControlFields();
Многие компоненты ядра уже используют этот подход. Соответствующий PR был принят в Joomla 5.3 осенью 2024г.Смотреть
Pull Request@joomlafeed#joomla #разработка #php

JoomGallery 4.1.0 - компонент галереи изображений для Joomla

JoomGallery 4.1.0 - компонент галереи изображений для Joomla

Новая итерация компонента продолжает развиваться, ведь с v.4.x компонент был переписан практически с нуля.

v.4.1.0. Что нового?

Редактирование метаданных изображений. Теперь метаданные можно не только читать, но и напрямую редактировать и записывать обратно в изображение JPG. Поддерживаются данные EXIF ​​и IPTC.

Полная совместимость с Joomla! 4.x, 5.x и 6.x. Компонент почистили от устаревших методов в коде.

Заметно ускорили загрузку больших галерей. Списки в админке, особенно для очень больших галерей ( >30 000 изображений), теперь загружаются значительно быстрее.

Несколько сеток lightGallery на одной странице. Будь то плагины контента или модули изображений: теперь вы можете отображать несколько галерей или категорий на одной странице без каких-либо ограничений.

Множество мелких исправлений ошибок и оптимизаций.

Сайт проекта

GitHub расширения

Скачать

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

aldem67

  • Осваиваюсь на форуме
  • 12
  • 1 / 0
Доброй ночи. подскажите, как обратиться к методам модели из вида. Почему-то в одном месте работает, а в другом упорно ничего не видит.

вот так работает
Код: php
<?php
defined('_JEXEC') or die('');
jimport('joomla.application.component.view');
class CatxViewJournal extends JView{
function display($tpl=null){
$model=& $this->getModel('Journal');
$rows=&$model->getJournal();
$this->assignRef('rows',$rows);
parent::display($tpl);
}
}
?>


а в виде добавления записи
Код: php
<?php
defined('_JEXEC') or die('');
jimport('joomla.application.component.view');

class CatxViewAddjournal extends JView{
function display($tpl=null){
$model=& $this->getModel('Journal');
$month=&$model->getMonth();
$this->assignRef('month',$month);
parent::display($tpl);
}
}

?>

Упорно не видит методы. да и когда я вывел $model через var_dump во втором случае, он мне вернул NULL   >:(

Что-то важное я упустил, но что не пойму. может какую-то переменную нужно определить для методов ADD, EDIT? чтобы в них можно было вызывать метод
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Обратиться к модели из вида
« Ответ #1 : 16.11.2010, 01:00:26 »
Это потому что список доступных моделей для вью назначает контроллер, а по умолчанию он, гад, назначает только модель с тем же именем, что и вью.
То есть, либо напрямую импортировать файл класса нужной модели, либо переписывать метод display контроллера, чтобы добавить нужную модель.
*

aldem67

  • Осваиваюсь на форуме
  • 12
  • 1 / 0
Re: Обратиться к модели из вида
« Ответ #2 : 16.11.2010, 01:04:29 »
Спасибо большое. Пойду пробовать.
*

aldem67

  • Осваиваюсь на форуме
  • 12
  • 1 / 0
Re: Обратиться к модели из вида
« Ответ #3 : 16.11.2010, 13:18:35 »
Прошу прощения. Реализовал следующим образом. Переписав именно контроллер.
Код: php
public function add(){
JRequest::setVar('view','addjournal');

$view = $this->getView('addjournal','html');

$model =& $this->getModel('journal');
$month=$model->getMonth();
$view->assignRef('month',  $month);

parent::display();
}

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

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Re: Обратиться к модели из вида
« Ответ #4 : 16.11.2010, 13:24:42 »
по-научному можно сделать так:
Код
$model =& $this->getModel('journal');
$view->setModel($model, true);
и уже во view данные из модели тащить
*

aldem67

  • Осваиваюсь на форуме
  • 12
  • 1 / 0
Re: Обратиться к модели из вида
« Ответ #5 : 16.11.2010, 13:41:11 »
Вот спасибо. все получилось!  yes!
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Re: Обратиться к модели из вида
« Ответ #6 : 16.11.2010, 15:52:58 »
Это потому что список доступных моделей для вью назначает контроллер, а по умолчанию он, гад, назначает только модель с тем же именем, что и вью.
То есть, либо напрямую импортировать файл класса нужной модели, либо переписывать метод display контроллера, чтобы добавить нужную модель.
И вот это реально парит. Я напрямую модель подключаю используя соответствующий самописный метод.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

использование Quote и getEscaped в модели компонента

Автор Dron79

Ответов: 1
Просмотров: 3463
Последний ответ 12.12.2010, 08:46:35
от Dron79
Как в модели получить объект другой модели?

Автор Виталик

Ответов: 2
Просмотров: 2062
Последний ответ 05.01.2010, 21:31:48
от Виталик
Перемення модели определена в первом методе контролера, не видна во втором.

Автор yAnTar

Ответов: 1
Просмотров: 1487
Последний ответ 08.11.2008, 19:10:02
от Greck