将GET变量传递给Joomla组件

3

我正在尝试构建一个简单的Joomla组件,根据Google API显示自定义谷歌搜索结果。如何将get变量传递给Joomla组件?假设我已经有了基础知识,调用一个自定义视图index.php?option=com_google&view=google,那么我想将'q' $_GET变量传递给它,URL查询字符串应该是什么样子的?

2个回答

6

HTTP请求方法GET使用URL,因此变量始终通过请求的URL传递。

要将q添加到当前URL中,只需添加&q=SomeValue,其中SomeValue已被适当百分号或URL编码

Joomla 1.5

如果您正在使用Joomla!1.5,则可以使用{{link3:JRequest}}获取任何变量的值,无论是通过POST还是GET提交的,请参阅检索请求变量的此文档

$q = JRequest::getVar('q');

Joomla 1.6+

对于Joomla!1.6+,建议使用JInput检索请求数据,因为JRequest已经过时,而且对于Joomla!3.0+,你必须使用JInput,因为JRequest的功能被删除,并将在接下来的几个版本中继续消失。

要使用JInput,您可以获取当前对象或通过当前Joomla应用程序链接来检索变量。

获取JInput

$jAp = JFactory::getApplication();  // Having the Joomla application around is also useful
$jInput = $jAp->input;  // This is the input object
$q = $jInput->get('q');  // Your variable, of course get() support other option...

使用链接方式通过 JInput
$jAp = JFactory::getApplication();  // Having the Joomla application around is also useful
$q = $jAp->input->get('q');  // Your variable

1
仅为完整起见,在此指出,尽管已被弃用,但大多数Joomla核心组件仍在Joomla 2.5中使用JRequest,因为JInput在魔术引号方面存在已知问题。而JRequest则没有这个问题。在Joomla 3.0中,必须关闭魔术引号,因此那里也没有问题! - George Wilson
@GeorgeWilson非常正确,但请记住,自PHP 5.3.0起,魔术引号功能已被弃用,并在PHP 5.4.0中被删除。http://php.net/manual/en/security.magicquotes.php(这些功能在PHP 5+中默认关闭,大多数主机现在都在使用它们)。 - Craig

1

您可以使用以下代码在Joomla中检索GET变量:

$q = JRequest::getVar( 'q' );

这适用于以下url字符串:
index.php?option=com_google&view=google&q=some_variable

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接