Как я могу использовать модель другого компонента в моем компоненте?

Я создаю компонент и ему нужен доступ к таблице #__content. Компонент com_content делает все, что мой компонент должен делать в этой таблице. Как импортировать модели com_content в контроллеры в моем компоненте?

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

7 голосов | спросил csbenjamin 23 PMpWed, 23 Apr 2014 16:49:23 +040049Wednesday 2014, 16:49:23

1 ответ


13

Вы можете импортировать модели com_content в контроллер с помощью метода addIncludePath():

JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_content/models', 'ContentModel');

addIncludePath() добавляет каталог, где JModelLegacy должен искать модели. Вы можете передать строку или массив каталогов в качестве первого параметра. В качестве второго параметра вы можете указать префикс класса для моделей (необязательно).

Затем просто используйте метод getInstance():

$model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true));

Первый параметр - тип модели для создания экземпляра, второй - префикс для имени класса модели (необязательно), а третий параметр - это массив конфигурации для модели (необязательно).

Но я предпочитаю не использовать существующие таблицы основных компонентов для настраиваемых компонентов.

ответил Dmitry Rekun 23 PMpWed, 23 Apr 2014 17:16:53 +040016Wednesday 2014, 17:16:53

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132