获取整个$ _POST的正确方法是什么?


26

在Joomla!2.5.x我可以简单地运行,JRequest::get('post');但是看到JRequestJoomla中已弃用了它!3.x我应该使用JInput

在他们的那一刻,这是我用来获取整个代码的代码$_POST

$app = JFactory::getApplication();
$postData = $app->input->getArray(array_flip(array_keys($_POST)));

但这似乎很麻烦,如果与$app->input->set();我结合使用,我会遇到问题,我认为会有更好的方法吗?

在搜寻之前,我发现有人说你可以跑步

$app = JFactory::getApplication();
$postData = $app->input->post;

但是,当我尝试这样做时,我只是得到了该JInput对象的一个实例。


Answers:


31
$app = JFactory::getApplication();
$postData = $app->input->post;

解决方法是,您将获得一个JInput对象,并且可以像JRequest一样使用它

$var = $postData->get('varname', 'defaultvalue', 'filter');

过滤器可以是'int','cmd'或其他许多过滤器-完整列表可以在此函数中找到:https : //github.com/joomla/joomla-cms/blob/a3df15f1ddad6d9051d53f939b6afd2f5fca60b7/libraries/joomla/filter/input .php#L138

如果您只想要数组,则可以

$array = $app->input->post->getArray();

但是您应该避免这种无需过滤即可访问用户数据的方式。


1
很多时候,我需要在$_POST不真正知道需要获取的vars名称的情况下获取全部信息,这就是为什么JInput在许多情况下使用这样的对象没有用的原因。仍然是一个很好的答案。
Spunkie 2014年

2
仅供参考,$app->input->post->getArray();仅在Joomla 3.2.0及更高版本上有效。在任何早期版本(包括2.5)中,您都必须使用$app->input->getArray($_POST)
George Wilson

3

似乎完成此操作的另一种方法是简单地传递一个空数组:

$app = JFactory::getApplication();
$postData = $app->input->getArray(array());

这将检索JInput数据变量中的所有内容,就像您正在访问$_REQUEST超级目录一样。

这在Joomla中不起作用!JInput虽然是2.5.x版本。


-3

希望这会起作用,

JRequest :: get('post');

这将帮助您从PHP中的$ _POST等效项中获取数据。


2
问题清楚地表明,不建议使用此方法,因此OP正在使用JInput寻找更新的方法。
David Fritsch

@Harald您介意以您的特殊特权清除此答案吗?该用户似乎“早已不在”。
mickmackusa
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.