2

私は CodeIgniter を初めて使用するので、これが非常にばかげた質問である場合はご容赦ください。

Verify という検証システム用のコントローラーがあります。のようなものを使用できるようにしsite.com/verify/123/abcdたいのですが、インデックス機能のみを使用したいので、両方の URL セグメントにアクセスする必要があります。

これは何らかの方法で URL ルーティングを使用して実行できると確信していますが、両方の URL セグメントを Verify のインデックス関数に渡す方法がわかりません..

4

4 に答える 4

7

routes.php の次のようなものが仕事をするはずです:

$route['verify/(:any)/(:any)'] = "verify/index/$1/$2";

于 2010-11-30T07:57:11.663 に答える
1

問題を誤解していない限り、ルートや .htaccess を変更せずに、CodeIgniter の複数の引数で任意のコントローラー メソッドを渡すことができると確信しています。

function index($arg_one, $arg_two)
{

}

$arg_one は 123 を表し、$arg_two は例の URI の abcd を表します。

于 2010-12-01T07:26:44.237 に答える
0

ルートを編集するか、htaccess ルールを作成する必要がありますが、インデックス関数だけに制限する理由がわかりませんでした。

于 2010-11-30T07:43:12.090 に答える
0

何らかの理由でルートを使用したくない場合は、この関数を問題のコントローラーに追加できます。

public function _remap($method_in, $params = array()) {
    $method = 'process_'.$method_in;
    if (method_exists($this, $method)) {
        return call_user_func_array(array($this, $method), $params);
    }
    array_unshift($params, $method_in);
    $this->index($params);
}

基本的には、CI のデフォルトの動作と同じですが、「cant find method」で 404 を送信する代わりに、見つからないメソッド呼び出しをインデックスに送信します。

最初の引数として配列を取るようにインデックス関数を変更する必要があります。または、引数が 2 つだけ必要であることがわかっている場合は、最後の 2 行を次のように変更できます。

$this->index($method_in, $params[0]);

もちろん、どちらのソリューションも、誰かがコントローラーのメソッドと同じ引数を使用すると失敗します。

于 2011-03-22T05:27:16.590 に答える