网易首页 > 网易号 > 正文 申请入驻

3分钟短文:Laravel应用跟用户打交道,就从拿到他们的数据开始!

0
分享至

引言

本来讲完路由和控制器,应该接着讲一讲视图的,但是鉴于视图的功能实在太枯燥,况且是前端页面,免不了写一些js和css。而laravel是偏重后端的,所以为了给后端的开发同学缓冲的时间,我们跳过视图,先来说说用户数据的获取和处理,这几乎是任何应用必备之功能。

用户数据同时又是危险的!本文不会教你规避危险!

代码时间

我们在讲路由规划的时候,说了如何使用url的位置参数绑定的方式进行导向,其实那也是一种获取用户输入数据的方式,只不过,传入的位置参数一般都人畜无害,公开访问,任你来来往往。

如果是单个用户的私密数据,必然是不能直接url内嵌传输的。

laravel把用户的输入存储在Input对象内,而从逻辑上看,用户输入应该归属于请求项的,所以Request也继承了 Input 的方法和数据。比如有下面的路由:

Route::post('form', function (Illuminate\Http\Request $request) {
// $request->method()
});

模拟的是一个表单地址,通过post方法传送数据,然后使用 Request 方法。可供使用的获取方法,我们一一道来。

先说说$request->all(),这一个是打印所有的输入数据,比如表单内可能有下面这些字段。HTML 内容你们将就看一下哈!


{{ csrf_field() }}

form>

为了调试数据,我们的路由这样注册:

Route::post('/post-route', function (Request $request) {
var_dump($request->all());
});

大家猜猜会输出些什么内容呢?

/**
* [
* '_token' => 'CSRF token here',
* 'firstName' => 'value',
* 'utm' => 12345
* ]
*/

没错儿,就是看到的post表单的字段 firstName,还有 querystring 的查询参数 utm,还有一个是用于 CSRF 防护的laravel内置函数,默认的表单字段就是__token,所以大可不必费心。

但是有代码洁癖的同学会觉得受不了,这个不是我的字段,我在代码里也用不到,我不想看到这个__token,这个陌生的变量。可以,我们在请求参数内直接过滤掉就好了:

Route::post('/post-route', function (Request $request) {
var_dump($request->except('_token'));
});

其中,except()方法就是用来过滤某些字段,不需要使用的。与之对应的就是only()方法,是指定哪些是用的字段。这样用:

$request->only(['firstName', 'utm']);

还有些时候逻辑判断有些键是否存在,laravel提供了两种方式判断是否存在,一个是has,一个是exists。有同学会疑问,为什么有了has还要exists呢?因为他们的作用不同。

has方法不仅会判断该键存在,如果该键的值是(比如 null,空字符串,false,0,空数组,空对象等等),也是判断为false的。所以就有必要使用exists单纯地判断键的存在与否,大家用的时候一定要注意这个细微的差别

用法很简单,直接调用方法即可:

if ($request->has('utm')) {
// Do some work
}

如果对于输入值键不存在,我们也可以为其设置一个默认值,这就是input方法的第二个参数,使用如下调用:

Route::post('/post-route', function (Request $request) {
$userName = $request->input('name', 'anonymous');
});

如果用户没有传入 name 字段,那么就用 anonymous 替代。

上面说的都是简单的键值对,还有一种表单,传入的字段可能会是数组,比如下面这个:


{{ csrf_field() }}


form>

laravel内获取数组可以使用点式方式读取,这是因为laravel解析的时候使用了助手类 Arr 的通用方法。比如获取某个键:

$employeeZeroFirstName = $request->input('employees.0.firstName');

明确地指定键名,并对应好层级即可。还可以使用星号匹配某一层级所有的键:

$allLastNames = $request->input('employees.*.lastName');

或者仅指定某个键,后面不管多少层级原样返回:

$employeeOne = $request->input('employees.1');

具体用法读者可以查看源码或文档,深入研究一下Arr操作类的用法。

写在最后

本文几乎涵盖了用户输入input方法的最为常用的一些方法,我们只讲了怎么正常地获取用户数据,没有讲如何验证数据有效性。因为前端验证几乎形同虚设,最后能写到数据库的数据,还是要应用程序把关。

那就是验证器的工作了,验证器,我们放到后续章节再详细地讲。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
双汇子公司猪肉抗生素超标37.5倍 长期摄入或致心血管副作用

双汇子公司猪肉抗生素超标37.5倍 长期摄入或致心血管副作用

闪电新闻
2026-05-25 21:26:10
正当防卫被判死刑,枪决前6分钟被最高法紧急叫停,董伟案始末

正当防卫被判死刑,枪决前6分钟被最高法紧急叫停,董伟案始末

易玄
2026-05-25 01:45:09
官宣!与戴军牵手三月,李静不再隐瞒喜讯,晚年终于有依靠了

官宣!与戴军牵手三月,李静不再隐瞒喜讯,晚年终于有依靠了

皮蛋儿电影
2026-05-26 12:55:05
安静了,没人讲韬(套、逃)定律了……

安静了,没人讲韬(套、逃)定律了……

海右那人
2026-05-26 12:57:40
乌克兰每日消耗1万架无人机,俄军90%伤亡来自无人机!

乌克兰每日消耗1万架无人机,俄军90%伤亡来自无人机!

三言四拍
2026-05-26 12:40:30
中国AI落地“最后一公里”,联想打造“智能价值网”

中国AI落地“最后一公里”,联想打造“智能价值网”

一点财经
2026-05-25 18:12:51
稻城亚丁景区截断收费省道日常由地方财政出资维护?财政局回应:属实

稻城亚丁景区截断收费省道日常由地方财政出资维护?财政局回应:属实

上游新闻
2026-05-26 15:32:23
曝苏超球员与未成年发生关系!未满14岁最高死刑 不满18可算强奸

曝苏超球员与未成年发生关系!未满14岁最高死刑 不满18可算强奸

念洲
2026-05-26 16:59:59
武契奇前脚离开,后面塞尔维亚就乱了

武契奇前脚离开,后面塞尔维亚就乱了

凤眼论
2026-05-26 14:16:31
近半年0出场!曝24岁蓉城国门加盟国安,看中北京影响力+教育资源

近半年0出场!曝24岁蓉城国门加盟国安,看中北京影响力+教育资源

我爱英超
2026-05-26 17:42:21
消失已久的陈宝国,现状曝光令人心酸,43岁的儿子成他心病

消失已久的陈宝国,现状曝光令人心酸,43岁的儿子成他心病

铁锤妹妹是只猫
2026-05-25 13:13:13
“最严禁令”下,泰山石照卖不误:有人借河道工程盗采囤石上千吨,快递面单写成“日用品”

“最严禁令”下,泰山石照卖不误:有人借河道工程盗采囤石上千吨,快递面单写成“日用品”

新京报
2026-05-26 11:45:53
热!广东高“炎”值闷热天还要多久?

热!广东高“炎”值闷热天还要多久?

广东天气
2026-05-26 14:31:22
武汉28岁孕妇失联后续:时隔10天,首位目击人发声,丈夫行为反常

武汉28岁孕妇失联后续:时隔10天,首位目击人发声,丈夫行为反常

李晚书
2026-05-26 12:04:16
网友将问界新车路测画面发给国家反诈中心,被认定为AI生成

网友将问界新车路测画面发给国家反诈中心,被认定为AI生成

西虹市闲话
2026-05-26 16:43:17
行车视频55公里/小时,监控抓拍却是121公里/小时;两张抓拍照间隔0.081秒,记者现场测算发现疑点

行车视频55公里/小时,监控抓拍却是121公里/小时;两张抓拍照间隔0.081秒,记者现场测算发现疑点

大风新闻
2026-05-25 22:28:10
45辆新车在境外离奇消失!45笔零首付车贷,拖垮数十名普通人

45辆新车在境外离奇消失!45笔零首付车贷,拖垮数十名普通人

方圆
2026-05-25 14:50:41
滴滴出行App突发大规模故障:地图无法加载、定位失效

滴滴出行App突发大规模故障:地图无法加载、定位失效

三言科技
2026-05-26 17:55:04
官方通报“维也纳酒店牙刷刷马桶”“全季酒店用客人牙刷洗杯子后放回”:约谈涉事酒店负责人,责令立即整改,将根据调查核实情况严肃处理

官方通报“维也纳酒店牙刷刷马桶”“全季酒店用客人牙刷洗杯子后放回”:约谈涉事酒店负责人,责令立即整改,将根据调查核实情况严肃处理

大风新闻
2026-05-26 11:12:07
性能超越李飞飞,他们把10亿高斯点的3D世界装进浏览器

性能超越李飞飞,他们把10亿高斯点的3D世界装进浏览器

机器之心Pro
2026-05-25 14:45:32
2026-05-26 18:44:54
程序员小助手
程序员小助手
专注编程知识IT领域原创作者
254文章数 1793关注度
往期回顾 全部

科技要闻

中国AI要向外卷,而不只是做第二个OpenAI

头条要闻

25岁海归男恋上32岁离异女 因88.8万彩礼闹掰追讨12万

头条要闻

25岁海归男恋上32岁离异女 因88.8万彩礼闹掰追讨12万

体育要闻

上赛季差点降入英甲,下赛季要踢英超了

娱乐要闻

台媒贴脸!S妈被问大S嗑药当场沉默

财经要闻

中国铝行业爆单 下一个“煤炭”大周期?

汽车要闻

涉水加强 福特烈马亚马逊限量版上市 售价39.98万

态度原创

时尚
艺术
家居
教育
数码

全网刷屏,华语乐坛“嫡长女”终于来了!

艺术要闻

中国之美,美到极致!

家居要闻

生与命相依 旧公寓改造

教育要闻

工科三巨头:电子信息、计算机、电气,普通家庭到底怎么选才不亏

数码要闻

618消费观察:当“情价比”取代性价比,怎样的电视正在被买走?

无障碍浏览 进入关怀版