web-dev-qa-db-fra.com

Comment obtenir correctement un tableau de jInput?

Peut-être que ça fatigue les yeux, mais je suis incapable de récupérer un tableau posté à partir de jInput:

$jinput = JFactory::getApplication()->input;
$test1 = $jinput->get('Itemid');
$test2 = $jinput->get("filter");
$test3 = $jinput->get("filter['subjects']");

$test1 récupère avec succès l'élément Itemid, mais différentes méthodes de récupération du "filtre" n'entraînent jamais qu'un tableau vide.

JInput Object
(
    [options:protected] => Array
        (
        )

    [filter:protected] => JFilterInput Object
        (
            [tagsArray] => Array
                (
                )

            [attrArray] => Array
                (
                )
        )
    [data:protected] => Array
        (
            [option] => com_xyz
            [view] => titles
            [Itemid] => 241
            [filter] => Array
                (
                    [subjects] => Array
                        (
                            [0] => 6
                        )
                )
            [limit] => 25
            [limitstart] => 0

Cela ne me dérange pas de me sentir stupide pour un oubli, je suis juste fatigué de me battre. Toute aide est appréciée. :)

2
GDP

Essaye ça:

$app        = JFactory::getApplication();
$jinput     = $app->input;
$filter     = $jinput->getVar('filter',array());

J'espère que ça marche pour toi

3
Piero Marsilio

J'ai mal lu ou mal compris la documentation de $jinput->getArray(). J'ai compris que cela retournait un sous-ensemble des variables d'entrée, comme spécifié dans un tableau des variables qui vous intéressent. Bien que cela puisse être vrai, elle renverra également tout variable d'entrée si un tableau vide est fourni:

$allfields = $jinput->getArray(array())
3
GDP

Je viens de déconner un peu avec cela.

Essayez d’ajouter une valeur par défaut vierge et filtre comme arguments, comme ceci:

$test2 = $jinput->get('filter', '', 'RAW');
2
Lodder