Forms 如何在Joomla(2.5/3.x)中以正确的方式获取数组

Forms 如何在Joomla(2.5/3.x)中以正确的方式获取数组,forms,joomla,input,Forms,Joomla,Input,如果您只想要所有的物品,Joomla方法是: <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::getApp

如果您只想要所有的物品,Joomla方法是:

<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 = JRequest::getVar('item', array());
其中,如果未设置“item”,则第二个参数将是默认值。但请注意,这会像往常一样通过名称获取参数

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

<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 = JRequest::getVar('item', array());

这里第三个参数是必需的,因为默认过滤器是“cmd”,它不允许数组

如果使用JForm生成表单,则需要从JForm数组中提取发布的数据

对于本机3.x组件控制器内部的代码如下所示:

$items = $app->input->get('item', array(), 'ARRAY');
其中,
$this->input
是从
JControllerBase
继承的输入对象

对于使用传统MVC类的组件,代码如下:

    // Get POSTed data
    $data  = $this->input->post->get('jform', array(), 'array');
安全通知:

数组-尝试将输入转换为数组。像

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

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

数据数组本身未被清理

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


如果你想要数组,为什么不使用复选框类型呢?哈哈,这不是我的意思(谢谢),这是显而易见的[,但我的意思是关于“对于本机3.x组件”部分,似乎没有提到这一点..哦,不!数组将确保您获得有效的PHP数组对象。但它实际上不会清理输入。您需要单独执行此操作。