web-dev-qa-db-ja.com

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

私は、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を使用しています
  • 配列は多次元配列です。
7
TryHarder

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

<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');
5
David Fritsch