用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3543|回复: 9
收起左侧

url配置实现动态的controller名

[复制链接]
发表于 2009-5-19 17:14:45 | 显示全部楼层 |阅读模式
本帖最后由 lamperz 于 2009-5-19 18:09 编辑

我需要实现一个类似的url构造
每个用户有一个自己的主页,以用户名直接访问
例如用户名为 myname的用户,可以使用下面这样访问一个页面
http://localhost/myname/
 楼主| 发表于 2009-5-19 17:28:58 | 显示全部楼层
本帖最后由 lamperz 于 2009-5-19 18:09 编辑

就是在routes.php里面根据数据库的结果生成一个  $routes 数组
发表于 2009-5-20 04:30:07 | 显示全部楼层
本帖最后由 caincheung 于 2009-5-20 04:32 编辑

貌似在$routes这个数组里可以用正则表达式
PHP复制代码
 
$routes['u(.*)'] = 'index/userspace/$1';
 
复制代码


在访问http://localhost/uabc时,访问的则是index控制器的userspace方法,其参数为abc(以u作为前缀)
发表于 2009-5-21 09:08:10 | 显示全部楼层
这样可以给routes传参
发表于 2009-5-21 11:26:49 | 显示全部楼层
哇呀?有这一招,学习了。
发表于 2009-5-21 12:41:11 | 显示全部楼层
学习了,多谢分享
 楼主| 发表于 2009-5-30 07:05:12 | 显示全部楼层
貌似在$routes这个数组里可以用正则表达式PHP

$routes['u(.*)'] = 'index/userspace/$1';


复制代码
在访问http://localhost/uabc时,访问的则是index控制器的userspace方法,其参数为abc(以u作为前缀)


---------------------------
我实验了下,这样参数传不进来
$1获取不到
 楼主| 发表于 2009-6-2 22:12:22 | 显示全部楼层
找到办法了,在控制器里面读写route.php,动态添加内容

    function t()
    {
//        echo APPPATH;
        $file = APPPATH.'config/routes.php';
        $p = fopen($file, "a+b");
        fwrite($p, "\r\n");
        fwrite($p, '$route[' . "'newyork(.*)'] = \"city/index/4\";");
    }
发表于 2009-6-3 10:05:10 | 显示全部楼层
楼上的方法不推荐在控制器里做,最好扩展 router 类。
发表于 2009-6-3 11:48:22 | 显示全部楼层
同意Hex童鞋

本版积分规则