web-dev-qa-db-ja.com

$ _POSTの代わりにJInputを使用する

var_dump($_POST);を使用すると、次の出力が得られます。

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

私の目的は、server値を取得することです。私はこれを使用して簡単にこれを達成できます:

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

スヌープして、次のcanを使用することがわかりました。

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

これはJInputにとって最良のアプローチですか、それとももっと良い方法がありますか?

2
Lodder

これはうまくいくはずです:

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

Getとpostの両方の値を取得できるため、post変数については特に触れていません。投稿などの特定のスーパーグローバルから値を取得する必要がある場合は、$app->input->postなどを使用できます。

上記の形式で名前とデータ型を渡すことにより、複数の値を取得できます。この方法では、安全でない可能性のある生データを取得する代わりに、必要なものを正確に取得できます。必要なデータ型を常に言及してください。

5
Nagarjun

あなたは試すことができます:

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

これをテストする遊び場はありませんが、うまくいくと思います。

4
codinghands