it-swarm-es.tech

¿Cómo acceder a una matriz en $ _GET usando JInput?

He estado investigando diferentes formas de obtener una matriz usando JInput.

De acuerdo a http://docs.joomla.org/Retrieving_request_data_using_JInput hay 2 métodos que puedo usar.

  • Método 1

    $jinput = JFactory::getApplication()->input;
    $jinput->get('nameOfArray',array(),'ARRAY');
    
  • Método 2

    $jinput = JFactory::getApplication()->input;
    $jinput->getArray('nameOfArray',array());
    

Nota: nameOfArray es el nombre de la matriz a la que quiero acceder en la matriz superglobal $ _GET.

Método1 funciona, pero Método2 da el siguiente error:

Error fatal capturable: el argumento 1 pasado a JInput :: getArray () debe ser del tipo de matriz, cadena dada, llamada en test.php

Mi pregunta es: ¿Cuál es la diferencia entre estos dos métodos?

  • La matriz utilizada en ambos ejemplos es la misma.
  • Estoy usando Joomla 2.5.x
  • La matriz es una matriz multidimensional.
7
TryHarder

El primer método busca elementos que comienzan con el nombre que ha especificado:

<input type="hidden" name="nameOfArray[test][1]" value="test" />
<input type="hidden" name="nameOfArray[]" value="test" />
<input type="hidden" name="nameOfArray[test][]" value="test" />
<input type="hidden" name="nameOfArray[tester][yes]" value="test" />

Todo lo anterior se devolvería como parte de una matriz en el método uno.


El método dos no intenta cargar una matriz por nombre, sino que acepta una matriz e intenta encontrar elementos de entrada que coincidan con las claves. Tome la siguiente entrada:

<input type="hidden" name="object1" value="test1" />
<input type="hidden" name="name2" value="test2" />
<input type="hidden" name="element3" value="test3" />

Si luego hiciste lo siguiente:

$elements = array('object1'=>'', 'name2'=>'', 'element3'=>'');
$jinput = JFactory::getApplication()->input;
$jinput->getArray($elements); // note that the second parameter is "datasource" not default value

Entonces obtendría una matriz como tal en $element:

array('object1'=>'test1', 'name2'=>'test2', 'element3'=>'test3');
5
David Fritsch