控制器定义

类名和文件名一样,

渲染输出

渲染输出使用return输出

<?php
namespace app\admin\controller;
use app\admin\model\User;class Index
{public function Index(){$data = array('ming' => 'ming','ming' => 'xiao');return json($data);}}

此时页面渲染出json文件

不能在控制器中中断代码。。
使用halt输出

<?php
namespace app\admin\controller;
use app\admin\model\User;class Index
{public function Index(){$data = array('ming' => 'ming','ming' => 'xiao');halt("输出测试");return json($data);}}

使用halt 输出

多级控制器

多级控制器 多级控制器直接在命名空间中使用

<?phpnamespace app\admin\controller\Index;class Blog
{public function index(){}public function read($id){var_dump(url('index/blog/read', ['id' => 5, 'name' => 'ming']));return $id;}
}

定义了Index命名空间下的子控制器 Blog
目录结构

定义路由规则

<?php
use think\facade\Route;Route::rule('blog/:id', 'index.blog/read');
Route::rule('/', 'Index/index');

访问index路由下的blog目录

基础控制器

控制器都会有一个基础控制器
系统会提供一个

app\BaseController

基础控制器

目录文件如下

所有的控制都有一个基础控制类
app\BaseController

由于是多应用模式。。基础类移动到目录下

更改命名空间

namespace app\index\controller;use think\App;
use think\exception\ValidateException;
use think\Validate;
<?phpnamespace app\index\controller;use think\Request;class Index extends BaseController
{/*** 显示资源列表** @return \think\Response*/public function index(){$action = $this->request->action();$path = $this->app->getBasePath();var_dump($action);var_dump($path);}/*** 显示创建资源表单页.** @return \think\Response*/public function create(){//}/*** 保存新建的资源** @param  \think\Request  $request* @return \think\Response*/public function save(Request $request){//}/*** 显示指定的资源** @param  int  $id* @return \think\Response*/public function read($id){//}/*** 显示编辑资源表单页.** @param  int  $id* @return \think\Response*/public function edit($id){//}/*** 保存更新的资源** @param  \think\Request  $request* @param  int  $id* @return \think\Response*/public function update(Request $request, $id){//}/*** 删除指定资源** @param  int  $id* @return \think\Response*/public function delete($id){//}
}

输出内容

string(5) "index" string(43) "/home/ming/PhpstormProjects/untitled12/app/"

控制器验证

<?phpnamespace app\index\controller;use think\exception\ValidateException;
use think\Request;class Index extends BaseController
{/*** 显示资源列表** @return \think\Response*/public function index(){try {$this->validate( ['name'  => 'thinkphp','email' => 'thinkphp@qq.com',],  'app\index\validate\User');} catch (ValidateException $e) {// 验证失败 输出错误信息dump($e->getError());}}/*** 显示创建资源表单页.** @return \think\Response*/public function create(){//}/*** 保存新建的资源** @param  \think\Request  $request* @return \think\Response*/public function save(Request $request){//}/*** 显示指定的资源** @param  int  $id* @return \think\Response*/public function read($id){//}/*** 显示编辑资源表单页.** @param  int  $id* @return \think\Response*/public function edit($id){//}/*** 保存更新的资源** @param  \think\Request  $request* @param  int  $id* @return \think\Response*/public function update(Request $request, $id){//}/*** 删除指定资源** @param  int  $id* @return \think\Response*/public function delete($id){//}
}

这样控制器验证

空控制器

空控制器是当找不到的方法的时候调用的方法

    public function __call($name, $arguments){// TODO: Implement __call() method.return 'error request';}

资源控制器

创建restful控制器
输入

php think make:controller index@Blog

生成资源控制器
生成api

<?phpnamespace app\index\controller;use think\Request;class Blog
{/*** 显示资源列表** @return \think\Response*/public function index(){//}/*** 保存新建的资源** @param  \think\Request  $request* @return \think\Response*/public function save(Request $request){//}/*** 显示指定的资源** @param  int  $id* @return \think\Response*/public function read($id){//}/*** 保存更新的资源** @param  \think\Request  $request* @param  int  $id* @return \think\Response*/public function update(Request $request, $id){//}/*** 删除指定资源** @param  int  $id* @return \think\Response*/public function delete($id){//}
}

注册资源路由即可

Route::resource('blog', 'Blog');

控制器中间件

编写控制器

<?phpnamespace app\index\middleware;class Hello
{public function handle($request, \Closure $next){$request->hello = 'ming';return $next($request);}
}

使用路由注册控制器

<?phpuse think\facade\Route;Route::rule('ming', 'index/index')->middleware([app\index\middleware\Hello::class]
);

访问 http://localhost:8082/index/ming
出现 ming

说明中间件注册成功

转载于:https://www.cnblogs.com/melovemingming/p/10950928.html

thikphp 控制器相关推荐

  1. struts2 与 sping 整合 控制器中 service注入的问题

    以个人见解认为struts1 与spring整合的时候按照习惯,我们会把 action 控制器直接配置到sping中去: eg : 这里以使用元注解方式实现Service注入进行讲解: 控制器关键代码 ...

  2. 人工智能微控制器体系结构

    人工智能微控制器体系结构 Microcontroller architectures evolve for AI 如果把人工智能和物联网交叉,会得到什么?AIoT是一个简单的答案,但是也可以为微控制器 ...

  3. 将人工智能模型压缩到微控制器中

    将人工智能模型压缩到微控制器中 Squeezing AI models into microcontrollers 当你把人工智能与物联网交叉时,你得到了什么?人工智能事物(AIoT)是一个简单的答案 ...

  4. stm32f302实现斩波控制步进电机_什么是步进电机控制器?

    在工业控制中难免会用到步进电机,步进电机如何控制,步进电机的速度.方向.驱动电流等等改如何设置,这就需要用到步进电机控制器,那么什么是步进电机控制.步进电机控制器与步进电机驱动器有什么区别.步进电机控 ...

  5. 基恩士上位机链路通讯_【原创分享】ABB机器人与视觉控制器的通讯

    在一些工厂里你是否经常看到下图这样的一些自动化设备,他的里边有用到机器人与相机通讯完成物料位置的检测与物料抓放等功能,那么恭喜你,几分钟时间阅读完这篇文章你就懂了. 小编花了不少时间收集整理资料,下面 ...

  6. php ci 调用控制器,如何从Codeigniter中的另一个控制器加载一个控制器?

    小编典典 您无法从CI中的控制器加载控制器-除非您使用HMVC或其他工具. 您应该考虑一下您的体系结构.如果需要从另一个控制器调用一个控制器方法,则可能应该将该代码抽象到帮助程序或库中,并从两个控制器 ...

  7. html5的video怎么把里面的控制器移出来_日产Pro-Pilot的ADAS控制器拆解

    接昨天的文章,我们来继续看一下日产Propilot的硬件迭代,这里主要分成几个部分,1)摄像头拆解 2)ADAS控制器1拆解和ADAS2控制器拆解,目前Propilot还没有拆解信心,但是通过官方发布 ...

  8. php 前端控制器,前端控制器模式

    前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理.该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请 ...

  9. ryu和mysql实现控制_openflow的初步认识及RYU控制器实践

    拓扑图如下: 无控制器下的openflow流表下发演示 创建一个交换机,3台主机,无控制器,流表手工下发: # mn --topo single,3 --controller=none --mac m ...

最新文章

  1. 微信分销 微信公众号开店 多用户版源码
  2. STM 软件事务内存——本质是为提高并发,通过事务来管理内存的读写访问以避免锁的使用...
  3. TestNG 入门教程
  4. 1.7 ConcurrentHashMap增删改查
  5. vue项目实现列表页-详情页返回不刷新,再点其他菜单项返回刷新的需求
  6. 2015蓝桥杯省赛---java---C---1(隔行变色)
  7. CentOS 7 定时计划任务设置
  8. 360产品演示代码 css3 html5,HTML5 CSS3代码的三维展示
  9. JavaScript 函数节流 throttle 和防抖 debounce
  10. Java并发编程(02):线程核心机制,基础概念扩展
  11. 关于如何提高代码可测试性的一些看法
  12. fp16和fp32,神经网络混合精度训练,PYTORCH 采用FP16,Libtorch采用FP16,神经网络混合精度三种避免损失,TensorRT模型转换及部署(一)
  13. 机器学习- 吴恩达Andrew Ng - week3-1 Classification
  14. 电骡服务器搜索文件排序,电骡搜中文名资源一定要注意的技巧及其他
  15. TDD实践之实用主义
  16. aop:aspectj-autoproxy
  17. Deferred异步操作
  18. 小米Q1业绩:总营收769亿元,手机稳居全球前三
  19. 如何判断一个 js 变量是数组类型
  20. 五大基本算法及其经典问题

热门文章

  1. python哪几种开源框架成为大主流【菜鸟必看】
  2. 模板 | 如何画出漂亮的深度学习模型图
  3. ImageNet的top-1终于上了90%?
  4. ImportError: Missing optional dependency ‘xlrd‘. Install xlrd >= 1.0.0 for Excel support Use pip or
  5. 太赞了!性能超越谷歌MobileNet!ECCV2020重磅推出MobileNeXt !
  6. 请注意,我们要谈谈神经网络的注意机制和使用方法
  7. ReedShepp与Dubins path的matlab实现
  8. html打开显示脚本错误,IE浏览器显示脚本错误怎么办 IE浏览器脚本错误解决方法图文教程...
  9. mysql 查询事务信息_查看MySQL最近的事务执行信息
  10. 清华源离线安装pytorch_【Pytorch】pytorch安装的时候下载不动