一:控制器定义

控制器,即 controller,控制器文件存放在 controller 目录下。

控制器有以下若干知识点:

  • 控制器下的每一个php类文件一般只有一个类,每个类必须有一个index函数,否则报错。
  • 如果想改变系统默认的控制器文件目录,可以在 config 目录下的 route.php 配置:'controller_layer' => '修改后的名称'
  • 类名和文件名大小写保持一致,并采用驼峰式(首字母大写)
  • 如果使用的是单应用模式,那么控制器的类的定义如下,控制器类文件的实际位置是app\controller\HelloWorld.php,在没有定义路由的情况下访问的URL地址是:http://localhost/index.php/HelloWorld/hello
    ,对于路径中的大写可以使用_换成小写,如http://localhost/hello_world/hello,事实上http://localhost/index.php/helloworld/hello也可以,但不推荐。
<?php
namespace app\controller;class HelloWorld
{public function hello(){return 'hello,world!';}
}
  • 如果希望避免引入同名模型类的时候冲突,可以在route.php配置文件中设置'controller_suffix' => true,那样的话就意味着使用控制器后缀,于是类名就需要添加Controller后缀,如下,相应的类文件也要改为app\controller\HelloWorldController.php
<?php
namespace app\controller;class HelloWorldController
{public function login(){return 'login';}
}
  • 控制器一般不需要任何输出,直接return即可。并且控制器在json请求会自动转换为json格式输出。也可以调用json($data)手动转化为json格式。
  • 不要在控制器中使用包括die、exit在内的中断代码。如果你需要调试并中止执行,可以使用系统提供的halt助手函数:halt('输出测试')

二:基础控制器

大多数情况下,官方建议给你的控制器继承一个基础控制器。默认安装后,系统提供了一个app\BaseController基础控制器类,你可以对该基础控制器进行修改。该基础控制器仅仅提供了控制器验证功能,并注入了think\Appthink\Request对象,因此你可以直接在控制器中使用app和request属性调用think\App和think\Request对象实例。至于控制器验证我水平有限,可能在以后的博客中添加相关内容。。。

三:空控制器

空控制器的概念是指当系统找不到指定的控制器名称的时候,系统会尝试定位当前应用下的空控制器(Error)类,利用这个机制我们可以用来定制错误页面和进行URL的优化。

四:多级控制器

所谓多级控制器,就是在控制器 controller 目录下再建立目录并创建控制器,我们在 controller 目录下建立 group 目录,并创建 Blog.php 控制器,而此时,我们需要访问的地址为:http://localhost:8000/group.blog,这样可能有点别扭,但是可以使用路由的知识改变该路径。

由于URL访问不能访问默认的多级控制器(可能会把多级控制器名误识别为URL后缀),因此建议所有的多级控制器都通过路由定义后访问,如果要在路由定义中使用多级控制器,可以使用Route::get('group/blog','group.blog/index')

五:资源控制器

资源控制器可以让你轻松的创建RESTFul资源控制器,可以通过命令行生成需要的资源控制器,例如生成index应用的Blog资源控制器使用:

php think make:controller index@Blog

如果不想新建一个文件夹而是在原本的controller下创建,可以使用以下命令:

php think make:controller Blog

或者使用完整的命名空间生成:

php think make:controller app\index\controller\Blog

如果只是用于接口开发,可以使用:

php think make:controller index@Blog --api

然后你只需要为资源控制器注册一个资源路由:

Route::resource(‘blog’, ‘Blog’);

这个资源路由表示注册了一个名称为blog的资源路由到Blog控制器,系统会自动注册7个路由规则,如下:

标识 请求类型 生成路由规则 对应操作方法(默认)
index GET blog index
create GET blog/create create
save POST blog save
read GET blog/:id read
edit GET blog/:id/edit edit
update PUT blog/:id update
delete DELETE blog/:id delete

关于资源路由的相关介绍将会在后续博客内展开。

如果想要了解更多相关知识,可以前往我的个人博客:eyes++的个人空间

thinkphp6控制器相关推荐

  1. TP6 + Layui实现无限极分类

    TP6 + Layui实现无限极分类 在做项目的时候遇到要做无限极分类的需求,查找了好久,终于找到一个最简单的写法. 数据库 thinkphp6 控制器方法 public function getAl ...

  2. 微信小程序+PHP 授权登录

    小程序页面代码 <!--pages/wxlogin/wxlogin.wxml--> <button bindtap="wxlogin">微信授权登录< ...

  3. thinkPHP6.0 控制器请求方法延迟生效解决办法

    使用thinkphp6开发项目,发现一个很神奇的问题,修改控制器后,会出现30秒的延迟,才能生效. 这个不是thinkphp6框架的问题,是PHP7.x的问题,关闭opchche就行. 找到php.i ...

  4. ThinkPHP6项目基操(4.拦截无效请求 控制器或方法不存在)

    拦截无效请求 控制器或方法不存在 一.默认无效请求 二.显示具体错误信息 方法1.配置`config/app.php` 方法2. 配置`.env`环境变量 三.处理错误 1. 方法不存在 2. 控制器 ...

  5. ThinkPHP6项目基操(3.控制器获取请求参数)

    控制器获取请求参数 一.新建 Demo 控制器 二.获取参数的方法 一.新建 Demo 控制器 <?phpnamespace app\controller; use app\BaseContro ...

  6. swagger的php配置,thinkphp6+swagger-php配置管理接口文档

    swagger2 升级到了3,并改名为OpenAPI Spec,所有部分注解有一些变化,这里以thinkphp6+swagger-php3.0来配置 1.前端部分git或dowload一份swagge ...

  7. php实现中间件6,说一说ThinkPHP6中五花八门的中间件_PHP开发框架教程

    thinkphp配置配置多应用多配置的方法_PHP开发框架教程 一般的thinkphp框架一般都是单模块开发的,但有时候我们可能需要进行多模块开发,本文就来为大家介绍一下thinkphp配置多模块.多 ...

  8. 95.91p30.space\/index.php,关于 ThinkPHP6 分页样式的定制及点击下一页搜索条件丢失的解决方法...

    首先说一下前提条件是多应用模式下,假设每页显示 3 条记录. 控制器文件所在路径: /app/index/controller/DemoController.php 模板视图文件所在路径: /app/ ...

  9. base32php,ThinkPHP6.0使用extends Base方式处理后台登录逻辑

    无论是后台管理系统还是用户端,登录场景是必备的.那么掌握高效的写法是非常有利于后期的维护的.使用ThinkPHP6.0可以使用两种非常高效的写法. 一种是使用功能类继承的方式,一种是使用中间件拦截来实 ...

最新文章

  1. java 按钮 事件_Java 添加按钮点击事件
  2. Hibernate Write operations are not allowed in read-only
  3. c语言编程 新浪博客,[c语言编程]经典编程
  4. 图形验证码校验php,ThinkPHP实现生成和校验验证码功能
  5. GIS基础知识汇总篇(五)-无人机真正射影像的概念和制作原理
  6. python中x y 1_Python的X[y==1, 0]
  7. MSE和Cross-entropy梯度更新比较
  8. jpa onetoone_拥抱开源从表设计到 JPA 实现
  9. 商品领域ddd_为 Gopher 打造 DDD 系列:领域模型-资源库
  10. CentOS 系统盘迁移
  11. 3198元起!魅族16s开启预约:4月28日全渠道首发
  12. c位边上还有什么位_会议桌C位,是它!
  13. centos安装mysql5.7.26_Centos安装mysql5.7.26
  14. [软件发布]可媲美EndNote的文献管理软件与论文写作辅助软件--RefNavigator
  15. [原创]MOF提权下载者代码
  16. 产品经理应该懂得的一点技术
  17. AmiGO2:在线浏览和查询GO信息的利器
  18. 使用M0 DesignStart 的样例SoC(example system) - 4 FPGA原型验证
  19. php ses 发送邮件,使用 Amazon SES API 和 AWS SDK for PHP 版本 3 验证电子邮件身份 - 适用于 PHP 的 AWS 开发工具包...
  20. vue.js bootstrap 下拉列表_Excel下拉菜单制作的小技巧

热门文章

  1. 编写python 函数,实现冒泡排序算法。
  2. 解决windows下蓝牙设备将休眠中的pc唤醒的困扰
  3. 中断向量,中断向量表 ,中断服务函数
  4. 【博客496】k8s dns解析与服务发现原理
  5. 逻辑电路复杂?我们用Logisim一键解决
  6. 云计算大会发言:接地气 高大上 科技感
  7. 利用matplotlib为论文画图(一)
  8. Android编程权威指南第3版 源代码
  9. 查询MySQL数据库中所有表的结构
  10. thinkphp5使用腾讯云发送短信验证码服务