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

标签 php model-view-controller joomla components

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

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

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

但是,在该响应中,他似乎使用的是来自另一个站点 View 的站点 View 模型。

这是我的组件结构的一些信息:

名称:com_stargazer

管理员 View :电子邮件

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

站点 View 和模型:returnpage

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

我试图通过包含路径来修改我的管理 View 以包含站点模型:

    $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 似乎无法从 View 中访问。 (可能只是 Controller ?)

其他,引用资料说要修改 Controller (评论中张贴的其他引用资料):

https://docs.joomla.org/Using_multiple_models_in_an_MVC_component

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

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

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

最佳答案

要调用前端或后端模型,您可以使用 JLoader 甚至 require_once 来包含模型文件。 使用 JLoader,您可以像这样在管理 View 中调用模型

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();

关于php - Joomla 3 - 自定义组件 - 如何从管理 View 访问站点模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37548273/

相关文章:

model-view-controller - IdentityServer4将登录UI移至客户端

javascript - 创建主干模型和集合时出现问题

jquery - Joomla Component jQuery datetimepicker 无效

php - 长图像名称破坏 CSS div

php - 写入 webroot 目录之外的文本文件

php - 如何从表中选择列值?

asp.net-mvc-4 - 绘制 MVC UML 图的正确方法

php - 数据库中的第一行未通过 mysql_fetch_row 或 mysql_fetch_assoc 显示在表中

javascript - 如何在 joomla 模块中通过 javascript 发送输入文件类型

php - 在 Joomla 中显示 MySQL 数据库中的特殊字符