web-dev-qa-db-ja.com

jInputから配列を正しく取得する方法は?

多分それは疲れた目ですが、投稿された配列をjInputから取得できません:

$jinput = JFactory::getApplication()->input;
$test1 = $jinput->get('Itemid');
$test2 = $jinput->get("filter");
$test3 = $jinput->get("filter['subjects']");

$test1は正常にItemidを取得しますが、 'filter'を取得するさまざまな方法では、結果としてempty配列しか得られません。

JInput Object
(
    [options:protected] => Array
        (
        )

    [filter:protected] => JFilterInput Object
        (
            [tagsArray] => Array
                (
                )

            [attrArray] => Array
                (
                )
        )
    [data:protected] => Array
        (
            [option] => com_xyz
            [view] => titles
            [Itemid] => 241
            [filter] => Array
                (
                    [subjects] => Array
                        (
                            [0] => 6
                        )
                )
            [limit] => 25
            [limitstart] => 0

私はこの時点で見落としにバカにされてもかまわない。私はそれとの戦いにうんざりしている。どんな援助でもありがたいです。 :)

2
GDP

これを試して:

$app        = JFactory::getApplication();
$jinput     = $app->input;
$filter     = $jinput->getVar('filter',array());

それがあなたのために働くことを願っています

3
Piero Marsilio

$jinput->getArray()のドキュメントを誤解または誤解しました。興味のある変数の配列で指定されているように、これは入力変数のサブセットを返すことを理解しました。これはtrueかもしれませんが、空の配列の場合はall入力変数も返します提供されます:

$allfields = $jinput->getArray(array())
3
GDP

これを少しいじってみました。

次のように、空白のデフォルト値と filter typeを引数として追加してみてください。

$test2 = $jinput->get('filter', '', 'RAW');
2
Lodder