Joomla 3 - 自定义组件 - 如何从管理视图访问站点模型?

Joomla 3 - Custom Component - How to access site model from Admin View?

我使用组件创建器为 Joomla 3 生成自定义组件。我在管理员面板中有一个视图需要前端模型的功能。

我已经 google 搜索了好几天,试图找到合适的答案,这是我最接近有效的回复:

但是,在该回复中,他似乎使用了来自另一个站点视图的站点视图模型。

以下是关于我的组件结构的一些信息:

姓名:com_stargazer

管理员查看:电子邮件

index.php?option=com_stargazer&view=email&layout=test /administrator/components/com_stargazer/views/email/tmpl/test.php

站点视图和模型:returnpage

/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

在过去的几天里,我尝试了上述参考代码示例的各种迭代。 . .最终我对修改哪个控制器感到困惑?我是否需要修改管理控制器或站点控制器才能使其正常工作?将功能添加到管理模型并在站点视图中访问它会更容易吗?

调试起来也很困难,因为我不知道是哪个模型引发了错误。到目前为止,我最好的猜测是,我根本没有运气从管理员视图附加到站点模型。如果您能帮助解决这个问题,我们将不胜感激。

这是我的第一个问题,所以我希望它足够清楚。
如果需要,我可以澄清。 提前致谢。

要调用前端或后端模型,您可以使用 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();