laravel请求参数验证方法
对于后端开发,前端请求请求中的参数验证是必不可少的一步。无论传输的参数是id、email还是其他参数,都要通过这样或那样的方式检查参数的类型、大小、格式,然后进行逻辑处理,确保逻辑处理万无一失,没有异常。这样一来,控制器层就会出现大量的校验码,甚至有时会超过正常逻辑码的数量,不利于程序的扩展和维护。
然而,laravel为我们提供了很好的服务来解决参数验证的问题,即验证。
首先我们需要建立一个路由,暂时叫做‘test’,然后test对应TestController中的测试方法。
Route:get('test ','[email protected]');class test controller extends controller { public function test(request $ request){ } }假设请求的参数中需要id和title两个参数,id必须是长度在1到10之间的数字,并且是DB中一行数据的主键,title必须是字符串,id和title都不能为空。编写时,一般框架会先获取id和标题,然后进行“id和标题是否为空”、“长度是否在1到10之间”、“数据是否可以通过id在数据库中找到”等繁琐的检查。你只需要使用laravel的“验证”。
公共函数测试(Request $ Request){ $ validator=validator :3360 make($ Request-all(),[ 'id'='必选|整数|介于:1,10之间',' title'='必选|字符串']);如果没有错误,逻辑处理将继续。例如,如果验证失败,id不在1到10之间,您可以通过“validate”实例中的“errors()”方法获取所有错误,然后将错误放回客户端。如果要返回错误队列中的第一个错误,请写入$validate-errors()-first()。如果要返回所有错误列表,请按如下方式写“$ validate”:
if($ validate-failed()){ return $ validate-errors()-first();}或返回
if($ validate-failed()){ return $ validate-errors()-all();}如果请求参数中的id不是数字而是字符串,将出现以下结果:
你可能会想:你能用中文返回结果吗?答案当然是肯定的,您可以将程序更改为任何您想要的语言:
在项目“resources”目录下“lang”的“en”文件夹中找到“validation.php”文件。
打开并找到这一行:
整数“=”:属性必须是整数。除了“:属性”之外,这句话和返回的结果完全一样吗?也许你已经猜到了:这是你调用的“整数”方法的返回结果。“:attribute”是变量,是你传递的“id”!现在,你可以用任何语言写。我把它改成中文:
整数'=':attribute必须是数字!然后我们将查看返回结果:
完美!只要使用Validator的make方法,就可以使用laravel提供的服务,通过请求参数数组中“‘integer’‘required’”等对应的字符串来检查“number”和“null decision”等请求参数。laravel提供的很多检查方法都可以在laravel官网查询到。(ps:或者直接查询validation.php的档案!)
你可能还会想:我已经检查过id是否为空,id是否为数字,我还想检查一下id对应的数据在数据库中是否能找到!这能实现吗?
答案是:绝对!在上一篇文章中,我介绍了laravel的核心是一个IOC容器,您可以轻松扩展任何服务并将其注入到容器中!自定义验证服务也不例外!
我们首先创建一个提供者
Php artisan制作:提供程序测试提供程序,然后在boot方法中写入:
公共函数boot(){ validator : extend(' user '),函数($attribute,$value,$parameters) { return!is _ null(user : find($ value));});}这一行代码很容易理解:1。调用“验证器”的“扩展”方法。2.给它们传递两个参数,一个是“user”,另一个是返回值为boolen类型的回调函数。3.该函数判断用户表是否包含$value数据。如果是,则返回真;如果不是,则返回false。
然后在“config”的“app.php”中注册这个提供程序。(如果您不清楚,可以阅读之前的文章“三分钟内了解laravel服务扩展”)
然后输入validation.php:
用户'='此用户不存在!然后在验证方法中添加“用户”
$ validate=validator :3360 make($ request-all(),[ 'id'='必选|整数|介于:1,10之间|用户',' title'='必选|字符串']);将数据插入数据库并开始检查:
好了,你完了!不是很简单吗?laravel框架很强大吗?
laravel要求的上述参数验证方法是边肖共享的全部内容。希望能给大家一个参考,多支持我们。
版权声明:laravel请求参数验证方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。