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

Php Joomla 3-自定义组件-如何从管理视图访问站点模型?,php,model-view-controller,joomla,components,Php,Model View Controller,Joomla,Components,我使用ComponentCreator为Joomla3生成了一个自定义组件。我在管理员面板中有一个视图,需要前端模型的功能 我已经在谷歌搜索了好几天,试图找到一个合适的答案,这是我最近得到的一个工作响应: 然而,在这个回答中,他似乎使用了另一个站点视图的站点视图模型 下面是关于我的组件结构的一点介绍: 姓名:com_stargazer 管理员视图:电子邮件 index.php?option=com\u stargazer&view=email&layout=test /管理员/componen

我使用ComponentCreator为Joomla3生成了一个自定义组件。我在管理员面板中有一个视图,需要前端模型的功能

我已经在谷歌搜索了好几天,试图找到一个合适的答案,这是我最近得到的一个工作响应:

然而,在这个回答中,他似乎使用了另一个站点视图的站点视图模型

下面是关于我的组件结构的一点介绍:

姓名:com_stargazer

管理员视图:电子邮件

index.php?option=com\u stargazer&view=email&layout=test /管理员/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似乎无法从视图中访问。(可能只是控制器?)

其他参考资料表示要修改控制器(在注释中发布的其他参考资料):

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

调试也很困难,因为我不知道哪个模型会抛出错误。到目前为止,我最好的猜测是,我根本没有从管理视图中连接到站点模型。如果您能帮忙解决这个问题,我们将不胜感激

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

要调用前端或后端模型,您可以使用JLoader,甚至需要一次包含模型文件。 使用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_一次

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

$tags_model = JModelLegacy::getInstance( 'returnpage', 'StargazerModel' );//Instantiate the model


$tags = $tags_model->gettags();

其他参考资料:***********非常感谢。你的回答很简单。我尝试了两种方法,它们都同样有效。你知道有没有一种方法比另一种更受欢迎?我感谢你的时间和专业知识。非常欢迎你。第二个需要较少的执行时间,但我更喜欢第一个,因为它遵循JoomlaAPI。