私は、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は、test.phpで呼び出される配列型、文字列型でなければなりません
私の質問は:これら2つの方法の違いは何ですか?
最初のメソッドは、指定した名前で始まる要素を探します。
<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');