可以使用路由绑定简化URL或路由规则的定义 绑定支持如下方式:
绑定到模块/控制器/操作
把当前的URL绑定到模块/控制器/操作 最多支持绑定到操作级别 例如在路由配置文件中添加:
// 绑定当前的URL到 index模块
Route::bind('index');
// 绑定当前的URL到 index模块的blog控制器
Route::bind('index/blog');
// 绑定当前的URL到 index模块的blog控制器的read操作
Route::bind('index/blog/read');
该方式针对路由到模块/控制器/操作有效 假如 绑定到了index模块的blog控制器 那么原来的访问URL从
http://serverName/index/blog/read/id/5
可以简化成
http://serverName/read/id/5
如果定义了路由
Route::get('index/blog/:id','index/blog/read');
那么访问URL就变成了
http://serverName/5
绑定到命名空间
把当前的URL绑定到某个指定的命名空间 例如:
// 绑定命名空间
Route::bind(':appindexcontroller');
那么 接下来只需要通过
http://serverName/blog/read/id/5
就可以直接访问 appindexcontrollerBlog
类的read方法。
绑定到类
把当前的URL直接绑定到某个指定的类 例如:
// 绑定到类
Route::bind('appindexcontrollerBlog');
那么 接下来只需要通过
http://serverName/read/id/5
就可以直接访问 appindexcontrollerBlog
类的read方法。
注意:绑定到命名空间和类之后 不会进行模块的初始化工作。
入口文件绑定
如果 需要给某个入口文件绑定模块 可以使用下面两种方式:
手动添加绑定
把当前入口文件绑定到指定的模块或控制器 例如:
// [ 应用入口文件 ]
namespace think;
// 加载基础文件
require __DIR__ . '/../thinkphp/base.php';
// 支持事先使用静态方法设置Request对象和Config对象
// 绑定到index模块 执行应用并响应
Container::get('app')->bind('index')->run()->send();
也支持绑定到控制器
Container::get('app')->bind('index/index')->run()->send();
自动入口绑定
如果你的入口文件都是对应实际的模块名 那么可以使用入口文件自动绑定模块的功能 只需要在应用配置文件中添加:
// 开启入口文件自动绑定模块
'auto_bind_module' => true,
当 重新添加个 public/demo.php
入口文件 内容和public/index.php
一样。
但其实访问 demo.php
的时候 其实已经自动绑定到了demo
模块。
尊贵的董事大人
英文标题不为空时 视为本栏投稿
需要关键字 描述 英文标题