我使用组件创建器为Joomla 3生成自定义组件。我在管理员面板中有一个视图,它需要前端模型中的函数。
我一直在谷歌搜索几天试图找到合适的答案,这是我最接近的工作回复:
但是,在该回复中,他似乎正在使用来自其他网站视图的网站视图模型。
以下是我的组件结构:
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
在过去的几天里,我尝试了上面引用的代码示例的各种迭代。 。 。最终我对哪个控制器要修改感到困惑?我是否需要修改管理控制器才能使其正常工作或站点控制器?将该功能添加到管理模型并在站点视图中访问它会更容易吗?
调试也很困难,因为我不知道哪个模型会抛出错误。到目前为止,我最好的猜测是,我从管理员视图中没有任何运气附加到站点模型。任何帮助将被理解为得到这个。
这是我的第一个问题,所以我希望它足够清楚 如果需要,我可以澄清一下。 提前谢谢。
答案 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();