我正在使用Joomla 1.5。我创建了一个自定义组件,可以完美地从数据库中提取数据。我在我的主要组件文件中初始化数据库,如下所示:
$db =& JFactory::getDBO();
问题是我的组件页面上有一个jQuery自动完成插件,它从我的组件文件夹调用PHP文件。该PHP文件在数据库中搜索匹配的结果,但我无法执行查询,因为我无法调用$db =& JFactory::getDBO();
,因为这是一个自定义的PHP页面,我无法在没有任何引用的情况下访问这些函数。
有人可以帮我在我的自定义文件中调用Joomla函数吗?
感谢。
答案 0 :(得分:2)
我建议不要调用单独的PHP文件,而是在组件中使用raw
视图格式。为此,请在组件中为jQuery将要提取的数据创建一个视图。为了便于讨论,我们将此视图称为autocomplete
。像设置任何其他视图一样设置autocomplete
视图,仅使用view.raw.php
代替view.html.php
。然后在JavaScript中,调用index.php?option=com_yourcomponent&view=autocomplete&format=raw
。此HTTP调用仅返回您在视图中输出的内容。
如果您绝对必须运行外部PHP文件,请查看使用Joomla创建独立应用程序!框架:http://docs.joomla.org/How_to_create_a_stand-alone_application_using_the_Joomla%21_Framework这是足以引入JFactory
和数据库连接的代码。但是如果你真的需要,只能使用它:否则,你只是在Joomla中创建另一个入口点!您必须维护和保护的应用程序。
你可能会发现Louis Landry关于做JSON的帖子很有用:http://groups.google.com/group/joomla-dev-cms/browse_thread/thread/5ac0b49c0f458b1a
我最近也在博客上发表了这个话题:http://www.designvsdevelop.com/the-way-not-to-do-javascript-in-joomla/
答案 1 :(得分:0)
我将使用JLoader类将外部PHP文件和类包含到joomla中。
JLoader::register( 'classname', dirname(__FILE__).DS.'classfoldername'.DS.'classfile.php');
这将包括该类并使其可供使用:
$theClass = new classname();