模型绑定(V5.0.1)

路由规则和分组支持绑定模型数据,例如:

  1. Route::rule('hello/:id','index/index/hello','GET',[
  2. 'ext' => 'html',
  3. 'bind_model' => [
  4. 'user' => '\app\index\model\User',
  5. ],
  6. ]);

会自动给当前路由绑定 id为 当前路由变量值的User模型数据。

可以定义模型数据的查询条件,例如:

  1. Route::rule('hello/:name/:id','index/index/hello','GET',[
  2. 'ext' => 'html',
  3. 'bind_model' => [
  4. 'user' => ['\app\index\model\User','id&name']
  5. ],
  6. ]);

表示查询idname的值等于当前路由变量的模型数据。

也可以使用闭包来返回模型对象数据

  1. Route::rule('hello/:id','index/index/hello','GET',[
  2. 'ext' => 'html',
  3. 'bind_model' => [
  4. 'user' => function($param){
  5. $model = new \app\index\model\User;
  6. return $model->where($param)->find();
  7. }
  8. ],
  9. ]);

闭包函数的参数就是当前请求的URL变量信息。

在控制器中可以通过下面的代码或者使用依赖注入获取:

  1. request()->user;
绑定的模型可以直接在控制器的架构方法或者操作方法中自动注入,具体可以参考请求章节的依赖注入。