如何在Joomla中获得正确的数组(2.5/3.x)

COB*_*ent 6 forms joomla input

<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.
?>
Run Code Online (Sandbox Code Playgroud)

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

Mal*_*ard 7

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

$items = JRequest::getVar('item', array());
Run Code Online (Sandbox Code Playgroud)

如果未设置'item',则第二个参数将是您的默认值.但请注意,这通过名称获取params,就像往常一样.

使用Joomla平台11.1及更高版本的同样如下:

$items = $app->input->get('item', array(), 'ARRAY');
Run Code Online (Sandbox Code Playgroud)

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


Val*_*spa 4

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

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

    // Get POSTed data
    $data  = $this->input->post->get('jform', array(), 'array');
Run Code Online (Sandbox Code Playgroud)

其中$this->input是输入对象,继承自JControllerBase.

对于使用旧版 MVC 类的组件,代码为:

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

    // Get posted data
    $data  = $jinput->post->get('jform', array(), 'array');
Run Code Online (Sandbox Code Playgroud)

安全须知:

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

$result = (array) $source;
Run Code Online (Sandbox Code Playgroud)

数据数组本身没有被清理。