我想要的 Web 应用程序部分的 URL 结构如下:
/user/FooBar42/edit/privacy
,我希望它路由到控制器:用户,函数:编辑,使用FooBar42
和privacy
作为参数(按此顺序)。我应该如何使用 CodeIgniter 完成此任务?
问问题
462 次
2 回答
3
定义这条路线应该application/config/routes.php
有效:
$route['user/(:any)/edit/(:any)'] = "user/edit/$1/$2";
但是,请注意,(:any)
在上述路线中会匹配多个段。例如,user/one/two/edit/three
将调用控制器edit
中的函数,user
但仅one
作为第一个参数和two
第二个参数传递。
(:any)
用正则表达式替换([a-zA-Z0-9]+)
将只允许一个长度至少为 1 的字母数字值。这缓解了上述问题,其中/
允许允许多个段。现在,如果user/one/two/edit/three
使用,将显示 404 页面。
$route['user/([a-zA-Z0-9]+)/edit/([a-zA-Z0-9]+)'] = "user/edit/$1/$2";
于 2013-04-11T00:16:04.957 回答
1
您还可以使用 CI 控制器的重新映射选项
http://ellislab.com/codeigniter/user-guide/general/controllers.html#remapping
并做这样的事情:
public function _remap($method, $params = array())
{
// check if the method exists
if (method_exists($this, $method))
{
// run the method
return call_user_func_array(array($this, $method), $params);
}
else
{
// method does not exists so you can call nay other method you want
$this->edit($params);
}
}
于 2013-04-11T13:33:54.127 回答