如何解决codeigniter路由正则表达式
| 我正在尝试将网址路由如下:domain.com/param/some_controller/method/
映射到
some_controller::method($param)
我不熟悉正则表达式,我很确定这是必需的,因此,如果有人可以帮助我入门,我将不胜感激。或为我指出一个好的教程或示例?
解决方法
效果相同,但采用Codeigniter风格:
//remember that custom routes need to go _after_ ci\'s default routes,as they\'re executed in the order you provide them
$route[\'default_controller\'] = \"welcome\";
$route[\'404_override\'] = \'\';
//exception 1 to your regex here
//exception 2 to your regex here
//so on...
$route[\'(:any)/(:any)/(:any)\'] = \"$2/$3/$1\";
, $route[\'(:any)/some_controller/method/\'] = \"some_controller/method/$1\";
如果您的参数是数字,请改用(:num)
。
在您的控制器中
function method($my_param) {
echo \'my param is \'. $my_param;
}
RL示例:
$route[\'(:num)/blog/entry/\'] = \"blog/view/$1\";
class Blog extends CI_Controller {
function view($id) {
echo \'fetching blog entry no \' . $id;
}
}
您的视图将看起来像
view.php
<html>
<body>
link to <?= anchor(\'1/blog/entry/\',\'my first post\'); ?>
link to <?= anchor(\'2/blog/entry/\',\'my second post\'); ?>
</body>
</html>
, 这有点混乱,因为当前无法通过路由来做到这一点而不会造成混乱。您可以尝试以下方法:
$route[\'([^/]+)/([^/]+)/([^/]+)\'] = \"$2/$3/$1\";
但是这说明它将应用于任何url:这会使常规控制器感到困惑。最好添加一些前缀来标识应使用此路由处理的请求:例如
$route[\'a/([^/]+)/([^/]+)/([^/]+)\'] = \"$2/$3/$1\";
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。