thinkphp6控制器
一:控制器定义
控制器,即 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\App
和think\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控制器相关推荐
- TP6 + Layui实现无限极分类
TP6 + Layui实现无限极分类 在做项目的时候遇到要做无限极分类的需求,查找了好久,终于找到一个最简单的写法. 数据库 thinkphp6 控制器方法 public function getAl ...
- 微信小程序+PHP 授权登录
小程序页面代码 <!--pages/wxlogin/wxlogin.wxml--> <button bindtap="wxlogin">微信授权登录< ...
- thinkPHP6.0 控制器请求方法延迟生效解决办法
使用thinkphp6开发项目,发现一个很神奇的问题,修改控制器后,会出现30秒的延迟,才能生效. 这个不是thinkphp6框架的问题,是PHP7.x的问题,关闭opchche就行. 找到php.i ...
- ThinkPHP6项目基操(4.拦截无效请求 控制器或方法不存在)
拦截无效请求 控制器或方法不存在 一.默认无效请求 二.显示具体错误信息 方法1.配置`config/app.php` 方法2. 配置`.env`环境变量 三.处理错误 1. 方法不存在 2. 控制器 ...
- ThinkPHP6项目基操(3.控制器获取请求参数)
控制器获取请求参数 一.新建 Demo 控制器 二.获取参数的方法 一.新建 Demo 控制器 <?phpnamespace app\controller; use app\BaseContro ...
- swagger的php配置,thinkphp6+swagger-php配置管理接口文档
swagger2 升级到了3,并改名为OpenAPI Spec,所有部分注解有一些变化,这里以thinkphp6+swagger-php3.0来配置 1.前端部分git或dowload一份swagge ...
- php实现中间件6,说一说ThinkPHP6中五花八门的中间件_PHP开发框架教程
thinkphp配置配置多应用多配置的方法_PHP开发框架教程 一般的thinkphp框架一般都是单模块开发的,但有时候我们可能需要进行多模块开发,本文就来为大家介绍一下thinkphp配置多模块.多 ...
- 95.91p30.space\/index.php,关于 ThinkPHP6 分页样式的定制及点击下一页搜索条件丢失的解决方法...
首先说一下前提条件是多应用模式下,假设每页显示 3 条记录. 控制器文件所在路径: /app/index/controller/DemoController.php 模板视图文件所在路径: /app/ ...
- base32php,ThinkPHP6.0使用extends Base方式处理后台登录逻辑
无论是后台管理系统还是用户端,登录场景是必备的.那么掌握高效的写法是非常有利于后期的维护的.使用ThinkPHP6.0可以使用两种非常高效的写法. 一种是使用功能类继承的方式,一种是使用中间件拦截来实 ...
最新文章
- java 按钮 事件_Java 添加按钮点击事件
- Hibernate Write operations are not allowed in read-only
- c语言编程 新浪博客,[c语言编程]经典编程
- 图形验证码校验php,ThinkPHP实现生成和校验验证码功能
- GIS基础知识汇总篇(五)-无人机真正射影像的概念和制作原理
- python中x y 1_Python的X[y==1, 0]
- MSE和Cross-entropy梯度更新比较
- jpa onetoone_拥抱开源从表设计到 JPA 实现
- 商品领域ddd_为 Gopher 打造 DDD 系列:领域模型-资源库
- CentOS 系统盘迁移
- 3198元起!魅族16s开启预约:4月28日全渠道首发
- c位边上还有什么位_会议桌C位,是它!
- centos安装mysql5.7.26_Centos安装mysql5.7.26
- [软件发布]可媲美EndNote的文献管理软件与论文写作辅助软件--RefNavigator
- [原创]MOF提权下载者代码
- 产品经理应该懂得的一点技术
- AmiGO2:在线浏览和查询GO信息的利器
- 使用M0 DesignStart 的样例SoC(example system) - 4 FPGA原型验证
- php ses 发送邮件,使用 Amazon SES API 和 AWS SDK for PHP 版本 3 验证电子邮件身份 - 适用于 PHP 的 AWS 开发工具包...
- vue.js bootstrap 下拉列表_Excel下拉菜单制作的小技巧