如果这是一个非常愚蠢的问题,请原谅,因为我是 CodeIgniter 的新手。
我的验证系统有一个控制器,称为验证。我希望能够使用类似的东西site.com/verify/123/abcd
,但我只想使用索引功能,所以两个 URL 段都需要去它。
我确信这可以通过 URL 路由以某种方式完成,但我不知道如何将两个 URL 段传递到验证的索引函数中。
如果这是一个非常愚蠢的问题,请原谅,因为我是 CodeIgniter 的新手。
我的验证系统有一个控制器,称为验证。我希望能够使用类似的东西site.com/verify/123/abcd
,但我只想使用索引功能,所以两个 URL 段都需要去它。
我确信这可以通过 URL 路由以某种方式完成,但我不知道如何将两个 URL 段传递到验证的索引函数中。
routes.php 中这样的东西应该可以完成这项工作:
$route['verify/(:any)/(:any)'] = "verify/index/$1/$2";
我很确定您可以在 CodeIgniter 多个参数中传递任何控制器方法,而无需修改路由或 .htaccess,除非我误解了问题。
function index($arg_one, $arg_two)
{
}
$arg_one 代表 123 和 $arg_two 代表示例 URI 中的 abcd。
您将需要编辑路由或编写 htaccess 规则,但是我不明白您为什么要限制为 index 函数。
如果您出于某种原因不想使用路由,则可以将此功能添加到相关控制器中。
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]);
当然,这两种解决方案都失败了,因为有人使用了与控制器中的方法相同的参数。