2013-05-03 3 views
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?Как правильно получить массив в Joomla (2.5/3.x)

+0

почему бы не использовать галочки типа, если вы хотите, чтобы массив? – Elin

ответ

1

Для компонентов с использованием наследия Следующий код работает (версия 3.3):

$jinput = JFactory::getApplication()->input; 
$data2 = $jinput->post->getArray(array()); 
var_dump($data2); 
7

Если вы просто хотите, чтобы все элементы, как Joomla будет:

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

где второй параметр будет ваше значение по умолчанию, если «элемент» не установлен. Но обратите внимание, что это выбирает параметры с помощью имени, как обычно.

То же самое с помощью Joomla Platform 11.1 и выше будет:

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

Здесь третий параметр необходим, так как фильтр по умолчанию «CMD», который не позволяет массивы. More information in the docs.

+0

Ну, нет! ARRAY просто удостоверится, что вы получите действительный объект массива PHP. Но на самом деле он не очищает входные данные. Вам нужно сделать это отдельно. –

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; 

Сам массив данных НЕ дезинфицирован.

+0

всякая ссылка на документы высоко оценена. –

+0

http://docs.joomla.org/Retrieving_request_data_using_JInput –

+0

lol, это не то, что я имел в виду (спасибо, хотя), это было очевидно [http://bit.ly/1dyYYiA], но я имел в виду именно «For родные компоненты компонентов 3.x, похоже, об этом не упоминается. –

Смежные вопросы