JInputを使用して$ _GETの配列にアクセスする方法は?


7

JInputを使用して配列を取得するさまざまな方法を研究しています。

http://docs.joomla.org/Retrieving_request_data_using_JInputによると、私が使用できる2つの方法があります。

  • 方法1

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

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

注:nameOfArray$ _GETスーパーグローバル配列でアクセスしたい配列の名前です。

Method1は機能しますが、Method2は次のエラーを出します。

キャッチ可能な致命的なエラー:JInput :: getArray()に渡される引数1は、t​​est.phpで呼び出される配列型、文字列型である必要があります

私の質問は、これらの2つの方法の違いは何ですか?

  • 両方の例で使用されている配列は同じです
  • 私はJoomla 2.5.xを使用しています
  • 配列は多次元配列です。

回答:


5

最初のメソッドは、指定した名前で始まる要素を探します。

<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" />

上記のすべてがメソッド1の配列の一部として返されます。


方法2では、名前で配列をロードするのではなく、配列を受け入れて、キーと一致する入力要素を見つけようとします。次の入力を受け取ります。

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

その後、次の操作を行った場合:

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

次に、そのような配列を取得し$elementます:

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

1
うん、そしてドキュメンテーションは間違っています。変更しました。
Dmitry Rekun 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.