J'ai étudié différentes manières d'obtenir un tableau à l'aide de JInput.
Selon http://docs.joomla.org/Retrieving_request_data_using_JInput , il y a 2 méthodes que je peux utiliser.
Méthode1
$jinput = JFactory::getApplication()->input;
$jinput->get('nameOfArray',array(),'ARRAY');
Méthode2
$jinput = JFactory::getApplication()->input;
$jinput->getArray('nameOfArray',array());
Remarque: nameOfArray
est le nom du tableau auquel je souhaite accéder dans le tableau superglobal $ _GET.
Method1 fonctionne, mais Method2 donne l'erreur suivante:
Erreur fatale capturable: l'argument 1 transmis à JInput :: getArray () doit être du type tableau, chaîne donnée, appelée dans test.php
Ma question est la suivante: Quelle est la différence entre ces deux méthodes?
La première méthode recherche les éléments commençant par le nom que vous avez spécifié:
<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" />
Tous les éléments ci-dessus seraient renvoyés dans le cadre d'un tableau de la première méthode.
La deuxième méthode ne tente pas de charger un tableau par son nom, mais accepte un tableau et essaie de trouver des éléments d'entrée correspondant aux clés. Prendre l'entrée suivante:
<input type="hidden" name="object1" value="test1" />
<input type="hidden" name="name2" value="test2" />
<input type="hidden" name="element3" value="test3" />
Si vous avez ensuite fait ce qui suit:
$elements = array('object1'=>'', 'name2'=>'', 'element3'=>'');
$jinput = JFactory::getApplication()->input;
$jinput->getArray($elements); // note that the second parameter is "datasource" not default value
Vous obtiendrez alors un tableau en tant que tel dans $element
:
array('object1'=>'test1', 'name2'=>'test2', 'element3'=>'test3');