0

この問題を解決するために多くの方法を試しましたが、どれもうまくいきません。

クラスがあるとします:

class MyTestClass{
    function testPrint($a = '', $b = '', $c = '') 
    {
        echo '1: ' . $a . ', 2: ' . $b . ', 3: ' . $c;        
    }
}

この URL を使用してこの関数にアクセスする と、出力としてhttp://localhost/ci/index.php/myTestClass/testPrint/a/b/c表示されますが、問題ありません。1: a, 2: b, 3: c

しかし、$b を空の文字列に割り当てると、URL は次のように変わりますhttp://localhost/ci/index.php/myTestClass/testPrint/a//c

出力1: a, 2: c, 3:は、不足しているパラメーターを CI が無視しているようです。

質問は、URI の途中で欠落しているパラメーターを CI が無視するのを防ぐ方法ですか?

URLが今のところ私の予想される出力は1: a, 2: , 3: c

ところで、$this->uri->segment(n)パラメータの位置を確保するために使用しようとしましたが、うまくいきません。

以下を追加して、routes.php を更新しようとしました。

$route['myTestClass/(:any)/(:any)/(:any)/(:any)'] = "myTestClass/$1/$2/$3/$4";しかし、これは何も変わりません。

何か案が?

4

1 に答える 1

0

あなたのケースでこれが可能かどうかはわかりませんが、短いダミー文字列 (この例では xyz ) を使用して、対処し/ /てからフィルター処理する必要がないようにします。

http://localhost/ci/index.php/myTestClass/testPrint/a/xyz/c

if ($b == 'xyz')
{ 
   $b = ''
}

可能であれば、URI セグメントを使用する代わりに変数を POST してみてください。それは物事をずっと簡単にするでしょう。お役に立てれば。

アップデート:

POST できないので、クエリ文字列を有効にしてみてはどうでしょうか。

于 2012-07-03T12:36:39.360 に答える