CodeIgniter使用索引函数的多个URL段

时间:2010-11-30 07:33:34

标签: codeigniter url-routing codeigniter-url php

如果这是一个令人难以置信的愚蠢问题,请原谅我,因为我是CodeIgniter的新手。

我的验证系统有一个名为Verify的控制器。我希望能够像site.com/verify/123/abcd这样使用它,但我只想使用索引函数,因此两个URL段都需要使用它。

我确信这可以通过URL路由以某种方式完成,但我无法弄清楚如何将两个URL段传递给Verify的索引函数。

4 个答案:

答案 0 :(得分:7)

routes.php中的这样的事情应该可以完成这项工作:

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

答案 1 :(得分:1)

我很确定你可以在CodeIgniter多个参数中传递任何控制器方法,而无需修改路由或.htaccess,除非我误解了这个问题。

function index($arg_one, $arg_two)
{

}

$ arg_one表示123和$ arg_two表示示例URI中的abcd。

答案 2 :(得分:0)

您需要编辑路由或编写htaccess规则,但我不明白为什么要限制索引函数。

答案 3 :(得分: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中的默认行为相同,除了不是在“无法查找方法”上发送404,它会向索引发送未完成的方法调用。

您需要更改索引函数以将数组作为第一个参数。 或者,如果您知道自己只需要2个参数,则可以将最后2行更改为

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

当然,有人使用与控制器中的方法相同的参数,两个解决方案都失败了。