2

如果这是一个非常愚蠢的问题,请原谅,因为我是 CodeIgniter 的新手。

我的验证系统有一个控制器,称为验证。我希望能够使用类似的东西site.com/verify/123/abcd,但我只想使用索引功能,所以两个 URL 段都需要去它。

我确信这可以通过 URL 路由以某种方式完成,但我不知道如何将两个 URL 段传递到验证的索引函数中。

4

4 回答 4

7

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

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

于 2010-11-30T07:57:11.663 回答
1

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

function index($arg_one, $arg_two)
{

}

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

于 2010-12-01T07:26:44.237 回答
0

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

于 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 中的默认行为相同,除了在“找不到方法”上发送 404 之外,它向索引发送未找到的方法调用。

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

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

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

于 2011-03-22T05:27:16.590 回答