ThinkPHP6表单上传的数据获取的四种方式【请求对象调用,静态调用,助手函数调用,原生的get|post】

简介: 本文介绍了在ThinkPHP6中获取表单上传数据的四种方式:请求对象调用、静态调用(Facade)、助手函数调用以及原生的$_GET和$_POST数组。文章通过示例代码展示了每种方式的具体使用方法,并强调了在使用请求对象调用时引入正确的Request类的重要性。

ThinkPHP6表单上传的数据获取

首先一个form表单中的Input控件需要存在对应的name值,然后method为post|get,action为要提交到的控制器的哪个方法

例如(本文的前端视图代码均为下面的html):

<form method="post" action="/index.php/login/login" >
    <input type="text" name="username"><br>
    <input type="text" name="password"><br>
    <input type="submit" value="提交">
</form>

这个表单意为,要提交数据到login.php控制器下的login方法

表单中的请求参数通过Request来获取,也可以使用原生的$_GET 或者 $_POST来获取,然后大致分为请求对象调用,Facade调用,助手函数调用。

那么我们接下来对这三种方式都通过个小例子来验证:

1. 请求对象调用

请求对象调用分为两种,构造方法注入(即提供一个构造器和一个Request实例)和操作方法注入(通过函数参数注入)。

1.1 构造方法注入

<?php
namespace app\controller;

use app\BaseController;
use think\Request; // 系统的think\Request对象


class Login extends BaseController
{
   
    // request 实例
    protected $request;

    // request 构造器注入方式
    public function __construct(Request $request)
    {
   
        $this->request = $request;
    }


    public function login(){
   
        return $this->request->param('username');
    }
}

这里注意别引入错了Request,构造方法注入的Request需要是think\Request

测试一下,ok,正确获取。

在这里插入图片描述

在这里插入图片描述

1.2 操作方法注入

<?php
namespace app\controller;

use app\BaseController;
use think\Request; // 系统的think\Request对象


class Login extends BaseController
{
   

    // 在方法参数上,将Request注入
    public function login(Request $request){
   
        return $request->param('username');
    }
}

在这里插入图片描述

在这里插入图片描述

2.静态调用(Facade)

在没有使用依赖注入的场合,可以通过Facade机制来静态调用请求对象的方法(注意use引入的类库区别)。

请求对象调用使用的是use think\Request; ,而静态调用使用的是use think\facade\Request;

<?php
namespace app\controller;

use app\BaseController;
use think\facade\Request; 


class Login extends BaseController
{
   


    public function login(){
   
        // 静态调用
        return Request::param('username');
    }
}

3.助手函数调用

为了简化调用,系统还提供了request助手函数,可以在任何需要的时候直接调用当前请求对象。

<?php
namespace app\controller;

use app\BaseController;

class Login extends BaseController
{
   

    public function login(){
   
        // 助手函数调用
        return request()->param('username');
    }
}

助手函数调用不需要引入使用其他的库。

4.原生的GET和POST

通过原生的$_GET$_POST来获取请求表单的参数。

<?php
namespace app\controller;

use app\BaseController;

class Login extends BaseController
{
   

    public function login(){
   
        return $_POST['username'];
    }
}

或者

<?php
namespace app\controller;

use app\BaseController;

class Login extends BaseController
{
   

    public function login(){
   
        return $_GET['username'];
    }
}

小结

在tp6中,获取上传的表单参数有多种方式,请求对象调用,静态调用,助手函数调用以及使用原生的$_GET$_POST均可。

但是需要注意的是,在使用请求对象调用是,引入的Request应为think\Request。静态调用时需要引入的Request应为think\facade\Request。助手函数调用和原生的$_GET$_POST不需要引入Request

最后就是表单请求的action域,需要写为/入口文件/控制器名/方法(/index.php/login/login)


相关文章
|
2月前
|
存储 数据可视化 JavaScript
可视化集成API接口请求+变量绑定+源码输出
可视化集成API接口请求+变量绑定+源码输出
71 4
|
5月前
|
JSON 文字识别 数据格式
文本,文字识别,Flask实现内部接口开发,OCR外部接口的开发,如何开发一个识别接口,通过post调用,参数是图片的路径,内部调用,直接传图片路径就行
文本,文字识别,Flask实现内部接口开发,OCR外部接口的开发,如何开发一个识别接口,通过post调用,参数是图片的路径,内部调用,直接传图片路径就行
|
6月前
|
Java 机器人 API
JAVA实现自动打开URL对应的网页并保存为图片-不借助第三方API
JAVA实现自动打开URL对应的网页并保存为图片-不借助第三方API
52 9
|
5月前
|
JavaScript API
前后端数据交互.js文件的axios的写法,想要往后端发送数据,页面注入API,await的意思是同步等待服务器数据,并返回,axios注入在其他页面,其他页面调用的时候,同步作用
前后端数据交互.js文件的axios的写法,想要往后端发送数据,页面注入API,await的意思是同步等待服务器数据,并返回,axios注入在其他页面,其他页面调用的时候,同步作用
|
存储 小程序 索引
小程序跨页面传递参数的几种方式
小程序跨页面传递参数的几种方式
394 0
|
7月前
|
XML JSON 前端开发
ajax中get和post的区别,datatype返回的数据类型有哪些?web开发中数据提交的几种方式,有什么区别。百度使用哪种方式?
ajax中get和post的区别,datatype返回的数据类型有哪些?web开发中数据提交的几种方式,有什么区别。百度使用哪种方式?
60 0
|
JSON 前端开发 JavaScript
layui上传文件弹出请求上传接口出现异常的终极解决方案(v2.68版本、ajax底层逻辑修改、debug快速定位)
layui上传文件弹出请求上传接口出现异常的终极解决方案(v2.68版本、ajax底层逻辑修改、debug快速定位)
1543 0
|
JSON 前端开发 JavaScript
详细自定义封装Axios请求库,你还不会二次封装吗?(一)
使用Vue的时候,Axios几乎已经是必用的请求库了,但是为了更方便搭配项目使用,很多开发者会选择二次封装,Vue3就很多人选择二次封装elementPlus,那其实,Axios我们也是经常会去封装的。
784 0
|
JavaScript API 开发者
详细自定义封装Axios请求库,你还不会二次封装吗?(二)
使用Vue的时候,Axios几乎已经是必用的请求库了,但是为了更方便搭配项目使用,很多开发者会选择二次封装,Vue3就很多人选择二次封装elementPlus,那其实,Axios我们也是经常会去封装的。
281 0
|
前端开发
前端hook项目pc总结笔记-hook项目文件上传单独封装请求
前端hook项目pc总结笔记-hook项目文件上传单独封装请求
89 0

热门文章

最新文章