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中的正确方法是什么?
如果您只想要所有项目,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',它不允许数组.更多信息在文档中.
如果您使用 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)
数据数组本身没有被清理。