【问题标题】:How to access joomla controller/model functions externally?如何从外部访问 joomla 控制器/模型功能?
【发布时间】:2013-01-28 06:36:26
【问题描述】:

我在 Joomla 和 Jomsocial 中创建了网站。

我正在 Joomla 中创建 Web 服务/API 以供我的移动应用访问。

移动应用程序将具有与网站几乎所有相同的功能。

我可以访问我的 Web 服务/API 中 controller/model externally 中定义的函数(任务)吗?怎么样?

注意:我正在使用 phonegap 开发移动应用程序

【问题讨论】:

  • 这是怎么做到的???HOW??我有同样的问题。

标签: web-services api plugins joomla jomsocial


【解决方案1】:

您不能直接调用模型或视图中的特定函数。

但是控制器中任何没有参数的公共方法都会被调用

yoursite/index.php?option=com_yourcomponent&task=yourpublicmethod.

这将触发指定的方法并在 Joomla 模板中呈现它,以及所有相关模块等。

如果你只想要主组件输出,添加到调用中

&tmpl=component

通过模板的component.php而不是index.php进行渲染,通常前者只加载外部资源(css和js)和主组件输出。

否则,如果函数返回代码(html xml 或 json),您可能需要调用它

&format=raw

它只返回你的publicmethod 的裸输出。这也可以通过指令在组件级别实现

exit;

在你的publicmethod执行结束时

【讨论】:

  • 尝试了您建议的方式。但它不起作用。我可以通过在我的 API 中包含该特定文件来访问 Jomsocial 的内置任务吗?
  • 很可能,我已经在 J​​oomla 模块中这样做了,您只需要引导 jomsocial(只需复制其中一个捆绑的模块即可!)
【解决方案2】:

Joomla CMS 实现了 MVC 模式(module-view-controlle),视图略有不同。它实现了视图模型视图。

在 Joomla 中,一切都是组件。每个组件都可以有自己的模型、视图、控制器、数据库表等。

简单的例子是你创建一个组件让我们说“helloworld”组件,这个组件位于 JROOT/administrator/components/com_helloworld 用于组件的管理面板部分和 JROOT/components/com_helloworld 用于前端.

在这些目录中,您有一个名为 com_helloworld.php 的文件,它会为此请求触发整个 MVC。

虽然 Joomla 实现了前端控制器模式,但您可以构建自己的组件,但最适合您(带或不带前端控制器)。

当您请求http://domainname.com/index.php?option=com_helloworld 时,我提到的 com_helloworld 文件将被调用,其中的所有内容都会执行。

有关更多信息,请参阅这篇关于开发 Joomla CMS 2.5 组件的非常有用的文章:

http://docs.joomla.org/Developing_a_Model-View-Controller_Component/2.5/Introduction

希望这会有所帮助:)

【讨论】:

  • 我在 joomla 中开发了组件。关于您的示例,说 com_helloworld 组件具有控制器和模型,其中有一些名为 sayhello() 的任务。我想在我的网络服务/API 中调用这个 sayhello 任务。有可能吗?
  • 是的,您可以使用:domainname.com/… 其中 controllername 是组件中的控制器名称,methodname 是控制器中的方法名称。
  • 好的,我会试一试。但是我可以使用 jQuery.ajax 调用这个任务吗?
  • 我在 chrome 浏览器中使用 Advanced REST Client 应用程序来调用此任务。但它不起作用。我使用 phonegap 开发移动应用程序。所以我想使用 jQuery.ajax 来调用这个任务。有什么想法吗?
  • 是的,你可以,你需要创建一个单独的方法并在它之上禁用布局(就像在大多数框架中一样)。不过要小心,因为 Joomla 默认使用 Motools。所以你需要 JQuery.noConflict()。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-10
  • 2017-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多