Welcome 微信登录

首页 / 网页编程 / PHP / thinkphp空操作和配置文件实现简化路由

thinkphp空操作和配置文件实现简化路由2014-08-04 cnblogs php万户侯1关于TP中空操作和路由问题

<?phpfunction test(){$content="test demo @云峰天下";$pattern="/@(S+)s/";$content=preg_replace($pattern,"<a href="".__APP__."/user/index/uname/\1">\1</a>"); return $content; }
最近在做一个微博,有一块是微博内容@用户加链接,跳转到用户页,刚开始感觉没什么难的,可以通过正则替换实现。

就像上面一样,将用户名使用get传值带到相应的控制器下面的方法下去。但是url确实太长,看了下视频中的介绍,使用了

空操作和路由进行了处理。

<?phpfunction test(){$content="test demo @云峰天下";$pattern="/@(S+)s/";$content=preg_replace($pattern,"<a href="".__APP__."/user/\1">@\1</a>"); return $content; }
将代码进行修改后如上,修改后链接是这样:<a href="localhost/weibo/user/云峰天下">@云峰天下</a>,但是user控制器下是没有这个方法的?

最后看完视频感觉tp挺强大的,是通过定义一个空操作和通过用户名获取用户id,再通过配置路由从而实现简化路由

/** * 空操作 */function _empty($name){$this->_getUrl($name);}/** * 处理用户名空操作,获得用户ID,跳转至用户个人页 */private function _getUrl($name){$where=array("username"=>$name);$uid=M("userinfo")->where($where)->getField("uid");if(!$uid){redirect(U("Index/index"));}else{redirect(U("/".$uid));//redirect(U("index",array("uid"=>$uid)));}}
在上面中由于是访问user下的每个用户名作为方法,会执行_empty()方法,该方法下调用私有方法_getUrl(),跳转到localhost/weibo/index.php/4(用户id号),由于该模块不存在,因此需要通过配置文件中的路由配置实现,如下

//URL路由配置"URL_ROUTER_ON"=>true, //开启路由功能"URL_ROUTE_RULES"=>array( //定义路由规则":idd"=>"User/index")