Как модель работает с формой

joomla-form-from-xmlЗаметка относится к вопросу разработки компонентов для CMS Joomla! и будет интересна всем, кто идет дальше рядового пользователя, создавая собственные дополнения к этой системе управления сайтами.

Рассмотрим взаимодействие Модели с формой на примере административной части нового компонента Joomla. Задача в том, чтобы на странице, предназначенной для работы с записями из базы данных, реализовать вывод формы. Ее поля будут использоваться для добавления или редактирования информации. Где описываются поля формы и как она вызывается в коде, читайте далее.

Как появляются формы в Joomla

За вывод формы на странице пользователя отвечает Вид компонента. Набор полей формы и другую необходимую информацию ему передает Модель. В свою очередь описание полей вводится при разработке компонента и находится в xml-файле.

Таким образом взаимодействие по схеме MVC выглядит следующим образом:

  • По запросу пользователя Контроллер передает управление Виду.
  • Вид запрашивает данные формы у Модели.
  • На основании xml-файла Модель возвращает данные Виду.
  • Через шаблон Вида форма выводится на странице пользователя.

Как выглядит взаимодействие Модели с xml-файлом в коде? Рассмотрим этот вопрос поэтапно.

Создаем класс Модели

Допустим, название компонента — com_spisok.
Данные в базе сгруппированы по категориям.
Тогда класс Модели будет описан следующим образом:

Класс является наследником класса JModelAdmin. Хотя в качестве родительского класса может использоваться JModelItem или JModelList, именно в JModelAdmin находятся свойства (методы), которые нужны нам в этом конкретном случае. Нас интересует возможность сохранения внесенных пользователем данных в базу. Метод, реализующий эту задачу, есть в JModelAdmin.

Описываем функцию, которая получит форму

Относительно параметров используемой функции.

  1. $this->LoadForm — обращаемся к методу в классе JModelAdmin, который получает объект формы, загружая ее параметры из xml-файла;
  2. $this->option — содержит имя нашего компонента (spisok). К нему добавляем имя нашей формы. Вот так: $this->option.’category’
  3. Далее указываем имя xml-файла без расширения — ‘category’
  4. Описываем массив параметров. К каждому тегу формы добавляем приставку jform: ‘control’=>’jform’. В результате html-код будет выглядеть так: <іnput type="text" name='jform[name]' />
  5. ‘load_data’=>$loadData — в зависимости от значения $loadData, которое может быть TRUE или FALSE в поля формы будет или не будет загружаться информация из базы данных. Если форма предназначена для редактирования, передается TRUE, если только для добавления новых данных — FALSE

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.