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。

我想要做的是将一个参数传递给我的控制器,以便检查数据库中的特定键,然后对其进行操作。如果数据库中不存在密钥,那么我需要将它们重定向到其他地方。

对此有什么想法吗?

4

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 Segment) 这部分将进入该变量$key。

这可能不是您要查找的内容,但如果您尝试传递两个或更多变量,它非常有用,因为您可以从 url 中获取段并将其存储到变量中

于 2013-10-27T06:10:21.690 回答