1

私は今、この問題に頭を悩ませています。私は高低を見てきましたが、何もうまくいきません。これは単純なはずであり、そうであると確信しています。

CodeIgniter のいくつかのパラメーターを URL に渡そうとしていますが、何も機能していないようです。これが私のコントローラーです:

class Form_controller extends CI_Controller {
    public function change($key = NULL) {
        if (is_null($key)) {
            redirect("reset");
        } else {
            echo "Hello world!";
        }
    }
}

これが私のルートです:

$route['change/(:any)'] = "form_controller/change/$1";

訪問するたび/index.php/change/helloに、「Hello world!」という文字列が表示されます。しかし、訪問する/index.php/changeと、404が見つかりませんでした。

私がやろうとしているのは、DB で特定のキーをチェックし、それに基づいて操作する目的で、コントローラーにパラメーターを渡すことです。キーが DB に存在しない場合は、別の場所にリダイレクトする必要があります。

これについて何か考えはありますか?

4

2 に答える 2

2

気にしないで、私はそれを理解しました。次のように、それらを処理するために 2 つの異なるルートを作成することになりました。

$route['change'] = "form_controller/change";
$route['change/(:any)'] = "form_controller/change/$1";

コントローラーの関数は次のようになります。

public function change($key = NULL) {
    if (is_null($key)) {
        redirect("reset");
    } else if ($this->form_model->checkKey($key)) {
        $this->load->view("templates/gateway_header");
        $this->load->view("forms/change");
        $this->load->view("templates/gateway_footer");
    } else {
         redirect("reset");           
    }
}

誰かがより良い解決策を持っているなら、私はすべての耳です. しかし、これは私にとってはうまくいきました。

于 2013-10-26T21:42:29.937 に答える
0

これはあなたを助けるかもしれません

public function change() {
 $key = $this->uri->segment(3);

http://ellislab.com/codeigniter/user-guide/helpers/url_helper.html

これにより、CI url ヘルパーを使用してセグメントを簡単に取得できます。

index.php/change/(3RD セグメント) この部分はその変数 $key に入ります。

これはあなたが探しているものではないかもしれませんが、URL からセグメントを取得して変数に格納するだけでよいため、2 つ以上の変数を渡そうとする場合に非常に便利です。

于 2013-10-27T06:10:21.690 に答える