В чем различия между типами моделей Joomla?


Я пытаюсь разобраться с мощью фреймворка Joomla (3.x).

Я заметил, что существует несколько типов моделей, которые можно использовать в компоненте:


JModelAdmin

Прототип модели администратора. Действует как фабричный класс для конкретных объектов приложения и предоставляет множество вспомогательных функций API.

JModelLegacy

Базовый класс для модели Joomla Действует как фабричный класс для объектов, специфичных для приложения и предоставляет множество вспомогательных функций API.

JModelList

Класс модели для обработки списков элементов. Действует как фабричный класс для конкретных объектов приложения и предоставляет множество вспомогательных функций API.

JModelForm

Модель формы прототипа. Действует как фабричный класс для конкретных объектов приложения и предоставляет множество вспомогательных функций API.

JModelItem

Модель прототипа изделия.


Я понимаю, что JModelLegacy похоже, это базовый класс. Мои модели по умолчанию расширяются JModelLegacy, однако мне было интересно, могу ли я потенциально использовать преимущества других классов.

Если бы был кто-то, кто знает об этих моделях, я был бы признателен за объяснение различий между этими классами моделей и предполагаемым сценарием, в котором вы использовали бы один из них по сравнению с другими.

Author: Sean, 2014-02-11

1 answers

Прежде всего, все классы доступны для изучения кода в разделе:

\libraries\legacy\model\

Classes

Также важно понимать, что эти классы должны использоваться (вообще говоря) в связи с соответствующими контроллерами: JControllerLegacy, JControllerForm и JControllerAdmin.

JModelLegacy - является базовым классом для модели Joomla (модель, как в MVC). В основном он будет работать как заводской класс, инициализируя объект драйвера базы данных и таблицу объект.

Возможно, вам захочется расширить этот класс, если вы просто хотите выполнить некоторые базовые SQL-запросы (любую работу с базой данных JD) и написать другую бизнес-логику.

Все модели будут расширяться JModelLegacy.


JModelList - это класс для обработки списков элементов. Он обеспечивает разбивку на страницы и фильтрацию. В основном везде, где вы отображаете список элементов, вы можете использовать JModelList. Все основные компоненты полагаются на JModelList.

JModelLegacy example


JModelForm и JModelAdmin как правило, связаны с формами. Формы могут быть формой регистрации пользователя или создания и редактирования записи. Формы в Joomla определяются в XML-файлах. JModelForm загрузит эти файлы в виде объектов JForm, загрузит данные формы, предварительно обработает форму и проверит ее.

Это один из самых мощных классов, которые вы можете использовать. Они будут выполнять тяжелую работу. Когда вам не нравится определенное поведение, вы можете переопределить его, реализовав свое собственное код.

JModelAdmin добавляет некоторые дополнительные функции администратора в форму:

  • выполнять пакетные операции с записями.
  • будет выполнять проверку ACL записей.

JModelAdmin обычно используется при редактировании записи или для пакетных операций, особенно в серверной части.


JModelItem - очень маловероятно, что вам это понадобится. Он предоставляет только метод getStoreId() и два свойства. Вам не понадобится этот класс, если только для именования вместо использования JModelLegacy вы не хотите чтобы расширить его при выполнении чего-то базового, например, при отображении записи. (мое личное понимание вещей).


Вывод: Выше приведено общее введение в эти классы, как я их вижу. Мое предложение состоит в том, чтобы подробно изучить, как Joomla использует их, какие методы доступны и как их использовать. Это очень мощные классы, и особенно для грубых операций они помогут вам выполнить всю тяжелую работу. После того как вы поймете, что они делают, вы сможете использовать их и переопределять их, когда это необходимо.

 27
Author: Valentin Despa, 2014-02-12 09:05:50