美文网首页
27、TP5路由绑定

27、TP5路由绑定

作者: IUVO | 来源:发表于2018-06-02 16:38 被阅读109次

本章我们学习TP5的路由绑定知识。

入口绑定
1、以上一章Demo控制器为例,去除路由,以PATN_INFO方式访问:http://tp5.com/index/demo/sub/20/1,访问正常。

2、打开项目的入口文件:/public/index.php,添加个系统常量:

//绑定到指定模块
define('BIND_MODULE','index');

3、这时候,以PATN_INFO方式访问的时候,就可以省略掉index模块:http://tp5.com/demo/sub/20/1。也就是说,我们将所有的访问都绑定到了指定的模块上。

4、除了绑定到指定模块上,我们还能绑定到指定模块下的控制器上:

//绑定到指定模块下面的控制器上
define('BIND_MODULE','index/Demo');

5、这时候,我们就还能省略demo控制器了,进一步简化URL了:http://tp5.com/sub/20/1

这就是入口文件的绑定。


入口自动绑定

1、首先打开惯例配置文件:/thinkphp/convention.php,找到auto_bind_module,复制到自定义配置文件:/config/config.php中,并修改为true:

  // 入口自动绑定模块
  'auto_bind_module'       => true,

2、创建一个新的入口文件:/public/admin.php,写入:

<?php
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 自定义配置目录
define('CONF_PATH', __DIR__ . '/../config/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';

3、我们的目标是要实现当访问admin.php的时候能够自动和admin模块绑定。

4、创建admin模块:/application/admin/controller/Index.php,写入:

<?php
namespace app\admin\controller;

class Index
{
  public function index()
  {
    return '我是admin.php入口文件对应的模块下面的方法';
  }
}

5、这样,当我们输入http://tp5.com/admin.php,就会自动执行admin模块下默认控制器下的默认方法。


动态绑定
1、继续以上一章的Demo控制器为例子,正常访问url为:http://tp5.com/index/demo/add/10/11

2、在/config/route.php文件中进行动态路由绑定:

think\Route::bind('index');//绑定到模块

3、绑定了模块后,省略index模块:http://tp5.com/demo/add/10/11

4、还可以绑定到控制器:

think\Route::bind('index/Demo');//绑定到控制器

这样连控制器都可以不写了:http://tp5.com/add/10/11

5、甚至还能绑定到操作:

think\Route::bind('index/Demo/add');//绑定到操作

这时候访问的url简化到发指:http://tp5.com/10/11


绑定到命名空间或者类

1、Demo控制器和Index控制器的命名空间都是app\index\controller,也就是说,如果将命名空间绑定到app\index\controller,那么所有使用该命名空间的控制器,都能直接使用。

2、修改/config/route.php文件:

think\Route::bind('app\index\controller','namespace');

3、那么该命名空间下,我们可以直接写控制器名称来访问:http://tp5.com/index/test/mike/21或者http://tp5.com/demo/add/3/21都可以直接访问。

4、我们还能绑定到命名空间指定的类:

think\Route::bind('app\index\controller\Demo','class');

5、那么当类被绑定后,我们就能直接访问到该类的方法:http://tp5.com/add/3/21


这种直接绑定到命名空间和类的,会直接跳过模块配置文件和公共文件。

1、我们在自定义配置目录下为index模块创建配置文件:/config/index/config.php,写入:

<?php
return [
  'my_frame' => 'TP5',
];

2、修改/config/route.php文件的路由绑定:

think\Route::bind('app\index\controller\index','class');

3、修改index控制器中的方法,返回刚才写的模块配置项:

public function test()
{
    dump(Config::get('my_frame'));
}

4、访问看看:http://tp5.com/test,发现访问不到,输出一个NULL

从而证实了这种绑定方式确实是会跳过模块配置文件和公共文件,需要注意。

路由绑定可以极大的简化项目开发,使开发流程更加清晰可控。

相关文章

  • 27、TP5路由绑定

    本章我们学习TP5的路由绑定知识。 2、打开项目的入口文件:/public/index.php,添加个系统常量: ...

  • ThinkPHP基础-----第五章(路由相关)第一部分

    1、路由作用简化URL地址 2、入口文件: 3、隐藏入口文件: TP5路由: 路由模式:

  • thinkphp5学习笔记(三)路由配置

    URL请求的执行流程 路由模式 路由注册 路由规则 路由地址 路由参数 变量规则 路由分组 别名路由 路由绑定

  • tp5 的灵活之处

    1.路由 tp5 的路由配置在 application 文件夹下的 route.php 文件中。有两种写法,详见官...

  • TP5.1路由设置

    TP5.1和Tp5在路由上use的空间不同,要注意看文档,

  • 最简单的Vue与Tp5共存

    1、【原理:】vue和tp5有自己的路由,但是tp5用来做数据端就不需要这个了,直接设置为vue的nginx配置即...

  • Laravel 5.2 新特性

    路由模型绑定 路由直接绑定模型,直接返回根据路由url 的格式的数据,省略了一步写查询的操作。下面看个例子: 如果...

  • TP5中路由与获取请求参数

    TP5中,路由是在route.php中来定义路由规则的,根目录部分可由apache和系统host文件来定义,之后的...

  • thinkphp5模型绑定的解释

    路由规则和分组支持绑定模型数据,例如: 会自动给当前路由绑定 id为 当前路由变量值的User模型数据。就是自动读...

  • CCNA-28、DHCP

    先将PC这台路由器的路由功能关闭掉 DHCP静态绑定

网友评论

      本文标题:27、TP5路由绑定

      本文链接:https://www.haomeiwen.com/subject/ndcrsftx.html