Joomla 3 — Пользовательский компонент — Как получить доступ к модели сайта из Admin View?

Я использовал компонент создателя для создания пользовательского компонента для Joomla 3. У меня есть представление на панели администратора, которое потребовало бы функции из модели в передней части.

В течение нескольких дней я выполнял поиск в Google, пытаясь найти подходящий ответ. Это самый близкий рабочий ответ:

Как включить несколько моделей в одно представление для компонента Joomla 3.x, созданного с помощью Component Creator

Однако в этом ответе он, похоже, использует модель представления сайта из другого представления сайта.

Вот немного о моей структуре компонентов:

имя: com_stargazer

Admin View: электронная почта

index.php? вариант = com_stargazer&вид = электронная почта&макет = тест
/administrator/components/com_stargazer/views/email/tmpl/test.php

Вид сайта и модель: обратная страница

/components/com_stargazer/models/returnpage.php
/components/com_stargazer/views/returnpage/tmpl/default.php

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

    $this->setModel(getModel(JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_stargazer/models', 'returnpageModel')));
$this->setModel(JModelLegacy::getInstance('returnpage', 'stargazerModel'));
//  assigns array from the second model to 'ItemsOtherModel.' there is no '$' sign used.
$this->ItemsOtherModel = $this->get('tags','returnpage');

Тем не менее, getModel не кажется, что он доступен с точки зрения. (Возможно, только контроллер?)

Другие ссылки говорят, чтобы изменить контроллер (Дополнительные ссылки размещены в комментариях):

https://docs.joomla.org/Using_multiple_models_in_an_MVC_component

За последние несколько дней я пробовал различные итерации приведенных выше примеров кода. , , В конечном итоге я запутался, какой контроллер изменить? Нужно ли изменить контроллер администратора, чтобы заставить это работать, или контроллер сайта? Будет ли проще добавить функцию в модель администратора и получить к ней доступ в представлении сайта?

Также было сложно отлаживать, так как я не знаю, какая модель выдает ошибку. Пока что мое лучшее предположение заключается в том, что мне НИКОГДА не повезло, когда я подключался к модели сайта с точки зрения администратора. Любая помощь будет оценена в решении этого вопроса.

Это мой первый вопрос, поэтому я надеюсь, что он достаточно понятен.
Я могу уточнить, если это необходимо.
Заранее спасибо.

2

Решение

Чтобы вызвать внешнюю или внутреннюю модель, вы можете использовать JLoader или даже require_once для включения файла модели.
Используя JLoader, вы можете вызывать модель в админке так:

JLoader::import('joomla.application.component.model'); //Load the Joomla Application Framework

JLoader::import( 'returnpage', JPATH_SITE  . '/components/com_stargazer/models' ); //Call the frontend model directory$tags_model = JModelLegacy::getInstance( 'returnpage', 'StargazerModel' );//Instantiate the model$tags = $tags_model->gettags();

И вы также можете использовать require_once

require_once JPATH_COMPONENT_SITE.'/models/returnpage.php';

$tags_model = JModelLegacy::getInstance( 'returnpage', 'StargazerModel' );//Instantiate the model$tags = $tags_model->gettags();
3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector