lamperz 发表于 2009-5-19 17:14:45

url配置实现动态的controller名

本帖最后由 lamperz 于 2009-5-19 18:09 编辑

我需要实现一个类似的url构造
每个用户有一个自己的主页,以用户名直接访问
例如用户名为 myname的用户,可以使用下面这样访问一个页面
http://localhost/myname/

lamperz 发表于 2009-5-19 17:28:58

本帖最后由 lamperz 于 2009-5-19 18:09 编辑

就是在routes.php里面根据数据库的结果生成一个$routes 数组

caincheung 发表于 2009-5-20 04:30:07

本帖最后由 caincheung 于 2009-5-20 04:32 编辑

貌似在$routes这个数组里可以用正则表达式

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


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

xfuajiao 发表于 2009-5-21 09:08:10

这样可以给routes传参

pader 发表于 2009-5-21 11:26:49

哇呀?有这一招,学习了。

2290757 发表于 2009-5-21 12:41:11

学习了,多谢分享

lamperz 发表于 2009-5-30 07:05:12

貌似在$routes这个数组里可以用正则表达式PHP

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


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


---------------------------
我实验了下,这样参数传不进来
$1获取不到

lamperz 发表于 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\";");
    }

Hex 发表于 2009-6-3 10:05:10

楼上的方法不推荐在控制器里做,最好扩展 router 类。

visvoy 发表于 2009-6-3 11:48:22

同意Hex童鞋
页: [1]
查看完整版本: url配置实现动态的controller名