当前位置:首页 > CMS教程 > Thinkphp > 列表

thinkphp框架实现路由重定义简化url访问地址的方法分析

发布:smiling 来源: PHP粉丝网  添加日期:2022-02-24 08:28:32 浏览: 评论:0 

本文实例讲述了thinkphp框架实现路由重定义简化url访问地址的方法,分享给大家供大家参考,具体如下:

如果按照正常访问的话,则需要输入一长串的url地址,这样会显得十分冗长,我可以可以通过对路由规则的重新定义简化url访问地址。

  1. <?php 
  2. namespace app\index\controller; 
  3. class Index{ 
  4.    public function index(){ 
  5.      return '我是index'
  6.    } 
  7.    public function hello($name='World'){ 
  8.      return  'Hello'.$name.'!'
  9.    } 
  10. ?> 

本来的访问路径应该是:

localhost/tp/index.php/index/index/hello

我们在路由定义文件(application/route.php)里面添加一些路由规则,如下:

  1. return [ 
  2.   // 添加路由规则 路由到 index控制器的hello操作方法' hello/:name' => 'index/index/hello', 
  3. ]; 

这是以hello开头的并且带参数的访问都会路由到index控制器的hello操作方法。

此时路径可以写为:

localhost/tp/hello/Thinkphp

此时输出结果为:

HelloThinkphp!

改变路由规则后若使用原来的路径访问方法后,则会出现错误。

但此时有一个问题是,如果访问地址为:

localhost/tp/hello

会抛出模板不存在的错误,因为在访问时,没有传参,而在定义路由规则时,则带有参数。

解决办法是在修改路由规则为:

  1. return [ 
  2.   // 添加路由规则 路由到 index控制器的hello操作方法' hello/[:name'] => 'index/index/hello', 
  3. ]; 

使用[]把路由规则中的变量包起来,就表示该变量为可选,接下来就可以正常访问了。

当name参数没有传入值的时候,hello方法的name参数有默认值World,所以输出的内容为

Hello,World!

除了路由配置文件中定义之外,还可以采用动态定义路由规则的方式定义,例如在路由配置文件(application/route.php)的开头直接添加下面的方法:

use think\Route;

Route::rule('hello/:name', 'index/hello');

完成的效果和使用配置方式定义是一样的。

无论是配置方式还是通过Route类的方法定义路由,都统一放到路由配置文件application/route.php文件中。

Tags: thinkphp路由重定义

分享到: