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

时间:2016-05-31 14:19:00

标签: php model-view-controller joomla components

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

我一直在谷歌搜索几天试图找到合适的答案,这是我最接近的工作回复:

How can I include multiple models in one view for in a Joomla 3.x component built with Component Creator

但是,在该回复中,他似乎正在使用来自其他网站视图的网站视图模型。

以下是我的组件结构:

name:com_stargazer

管理员视图:电子邮件

的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

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

调试也很困难,因为我不知道哪个模型会抛出错误。到目前为止,我最好的猜测是,我从管理员视图中没有任何运气附加到站点模型。任何帮助将被理解为得到这个。

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

1 个答案:

答案 0 :(得分:3)

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