web-dev-qa-db-fra.com

Utiliser JInput au lieu de $ _POST

En utilisant var_dump($_POST);, j'obtiens le résultat suivant:

array(2) 
{
    ["data"] => array(2) 
    {
        ["title"] => "XXX"
        ["server"] => "XXXXXX"
    }
    ["Itemid"] => "101"
}

Mon but est d'obtenir la valeur server. Je peux facilement y parvenir en utilisant:

$_POST['data']['server'];

Après avoir fouiné, j’ai trouvé que l’utilisation de can peut être utilisée:

$array  = $input->post->getArray(array());      
$server = $array['data']['server'];

Est-ce la meilleure approche pour JInput ou y a-t-il quelque chose de mieux?

2
Lodder

Cela devrait fonctionner:

$values = $app->input->getArray(array('data'=>'array'));
echo $values['data']['server'];

Veuillez voir que je n'ai pas mentionné spécifiquement la variable post, car elle peut récupérer les valeurs get et post. Si vous devez obtenir une valeur d'un super global spécifique, tel que post, vous pouvez utiliser quelque chose comme $app->input->post

Vous pouvez récupérer plusieurs valeurs en transmettant leurs noms et leur type de données au format ci-dessus. De cette façon, vous pouvez obtenir exactement ce que vous voulez au lieu d'obtenir des données brutes potentiellement dangereuses. Mentionnez toujours le type de données dont vous avez besoin.

5
Nagarjun

Tu pourrais essayer:

$data = $input->post->get('data', array(), 'ARRAY');
$server = $data['server'];

Je n'ai pas de terrain de jeu pour tester cela, mais je pense que cela fonctionne.

4
codinghands