3 控制器 + 助手函数
一 控制器定义
1)控制器定义
1 控制器文件通常放在controller目录下 类名和文件名保持大小写一致 采用大驼峰命名
2 如果要改变 controller 目录名 在 config\route.php中修改 'controller_layer' => 'controllers'
3 如果你定义的类名称是 HelloLibai{}
http://www.blog.com/admin/hellolibai
http://www.blog.com/admin/hello_libai
2)控制器后缀
如果你希望避免引入同名模型类的时候冲突
//修改配置文件:config\route.php 目录下 'controller_suffix' => true
//控制器类名:class UserContr {};
//对应的文件目录:app\controller\UserController.php
3)渲染输出
控制器的输出统一使用 return 的方式 return 'hello world'; //输出字符串 return json($data); //输出json return view(); //输出默认模板输出 中断调试请使用halt助手函数 不要使用exit die在内的中断代码
4 )多级控制器
控制器的文件位置 app\admin\controller\news\Blog.php
正常访问:http://www.blog.com/admin/news.blog/index
路由设置:Route::rule('news','news.blog/index');
二 基础控制器
1)系统默认的 BaseController.php
1 通过构造方法注入了 think\app 和 think\request 两个对象
2 编写了 validate 验证方法
3 可以通过 调用属性的方式 调用app 和 request 类 [ 属性已经通过构造函数初始化 ]
$this->app $this->request
2)app 和 request 的使用
<?php namespace app\admin\controller; use app\BaseController; class Index extends BaseController { public function hello(){ $action = $this->request->action();//获取当前的操作名 $path = $this->app->getBasePath();//获取应用基础目录 return $action.$path; } }
3)使用验证方法
<?php namespace app\admin\controller; use app\BaseController; use think\exception\ValidateException; class Index extends BaseController { //开启批量验证 重写定义父类的属性值为true protected $batchValidate = true; public function hello(){ try{ $this->validate([ 'name' => '', 'email' => 'dd', ],'\app\admin\validate\Demo'); } catch (ValidateException $e) { dump($e->getError()); } } }
三 空控制器 [ error类 ]
1 当系统找不到指定的 控制器名称 的时候,系统会尝试定位当前应用下的空控制器 error 类
2 利用这个机制我们可以定制错误页面 和 优化 url
<?php namespace app\admin\controller; class Error { public function __call($name,$arguments) { // TODO: Implement __call() method. var_dump($name); var_dump($arguments); return 'error request'; } }
四 资源控制器
RESTFul 接口api使用的
五 控制器中间件
没有研究明白
===========================================================================
二 助手函数


浙公网安备 33010602011771号