6
<form>
<input type="checkbox" name="item[]" value="1" />
<input type="checkbox" name="item[]" value="2" />
<input type="checkbox" name="item[]" value="3" />
</form>
<?php
$app = JFactory::getApplication();
$items = $_POST['type']; // This works but is not Joomla wise...

$items = $app->input->getArray(array('type_ids')); // Tried multiple ways but can't get it to work.
?>

将所有表单项加载到数组 $items 中的正确方法应该是什么?

4

3 回答 3

7

如果您只想要所有项目,Joomla 方式将是:

$items = JRequest::getVar('item', array());

如果未设置“项目”,则第二个参数将是您的默认值。但请注意,这与往常一样通过名称获取参数。

使用 Joomla 平台 11.1 及更高版本的相同是:

$items = $app->input->get('item', array(), 'ARRAY');

这里第三个参数是必要的,因为默认过滤器是'cmd',它不允许使用数组。文档中的更多信息

于 2013-05-03T13:24:10.857 回答
4

如果您使用 JForm 制作表单,则需要从 jform 数组中提取发布的数据。

对于本机 3.x 组件,代码将在控制器内部看起来像:

    // Get POSTed data
    $data  = $this->input->post->get('jform', array(), 'array');

$this->input输入对象在哪里,继承自JControllerBase.

对于使用遗留 MVC 类的组件,代码将是:

    // Get input object
    $jinput = JFactory::getApplication()->input;

    // Get posted data
    $data  = $jinput->post->get('jform', array(), 'array');

安全须知:

ARRAY - 尝试将输入转换为数组。喜欢

$result = (array) $source;

数据数组本身未经过清理。

于 2013-07-09T09:48:14.783 回答
1

对于使用旧版的组件,以下代码有效(版本 3.3):

 $jinput = JFactory::getApplication()->input;
 $data2  = $jinput->post->getArray(array());
 var_dump($data2);
于 2014-08-23T18:15:12.557 回答