首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Laravel 7中有条件地验证数组输入?

在Laravel 7中,可以使用条件验证规则来验证数组输入。条件验证规则允许您根据其他字段的值来决定是否应该对数组进行验证。

要在Laravel 7中有条件地验证数组输入,您可以使用required_ifrequired_unless规则。这些规则允许您指定一个字段和一个值,如果该字段的值等于或不等于指定的值,则对数组进行验证。

下面是使用required_if规则的示例:

代码语言:txt
复制
$request->validate([
    'role' => 'required',
    'permissions' => 'required_if:role,admin|array',
]);

在上面的示例中,我们要求role字段是必需的,并且permissions字段只有在role字段的值为"admin"时才需要验证,并且必须是一个数组。

您还可以使用required_unless规则来实现相同的效果,只需稍作修改即可:

代码语言:txt
复制
$request->validate([
    'role' => 'required',
    'permissions' => 'required_unless:role,user|array',
]);

在上面的示例中,permissions字段只有在role字段的值不是"user"时才需要验证,并且必须是一个数组。

这些条件验证规则可以帮助您根据特定条件对数组输入进行灵活的验证。根据您的具体需求,您可以使用其他验证规则来进一步验证数组中的每个元素。

关于Laravel 7的更多信息和文档,请参考腾讯云的Laravel 7文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

通过 Request 对象实例获取用户请求数据

而作为最流行的 PHP 框架,Laravel 自然也是为处理用户请求提供了丰富的工具集,从收集、验证、到过滤、编排,可谓是一应俱全,接下来,我们将通过三四篇教程的篇幅来为你详细介绍如何在 Laravel...注入请求对象 在 Laravel 中,访问用户输入数据最常用的方式,就是通过注入到控制器方法中的 Illuminate\Http\Request 对象实例,通过该实例,我们可以访问所有用户请求数据,不管是什么方式...学院'); 获取数组输入字段值 有的时候,我们在表单中传递给后端的可能是一个数组,比如一些复选框选中项,这些表单输入框的 name 值通常是 name[], books[],这个时候传递到后端的 books...获取 JSON 输入字段值 随着基于 JavaScript 的单页面应用(SPA)应用的流行,除了传统表单请求提交的 POST/GET 数据之外,JSON 格式的请求数据也越来越常见,Laravel 支持对...这个时候,我们需要显式通过 获取路由参数值 除了 URL 查询字符串以及表单提交数据之外,你可能会忽视还有一种形式的输入参数,就是路由参数,我们一般显式将其作为控制器方法参数或者定义路由的匿名函数参数传入

19.7K30

通过匿名函数和验证规则类自定义 Laravel 字段验证规则

Laravel 验证器的强大之处不仅在于提供前面提到的多种请求验证方式,以及非常丰富的字段验证规则(不同规则可以组合形成新的验证规则),从 5.5 版本开始,还支持自定义字段验证规则。...通过匿名函数实现自定义规则 我们先演示下如何在控制器方法中调用 $this->validate() 时自定义验证规则,以 title 字段为例,除了系统提供的字段验证规则之外,有时候我们还会禁止用户输入包含敏感词的字段...,在我们国家,这也是司空见惯的事情,那要如何实现这个 Laravel 办不到的事情呢,通过自定义验证规则: $this->validate($request, [ 'title' => [...URL', 'url.max' => 'URL长度不能超过200', ]); 要为某个字段自定义验证规则,原来通过 | 分隔多个规则的组合规则字符串已经实现不了了,需要将其改成数组的方式,然后将自定义规则以匿名函数的方式添加到数组最后...子目录,并在这个子目录下新增 SensitiveWordRule.php 文件,我们可以将验证通过条件定义到该类的 passes 方法中: public function passes($attribute

2.9K20
  • PHP技巧和窍门来简化你的代码

    技巧3 : (验证多个字符串) 假设我们要查找某个变量是否为多个字符串之一,显然我们必须编写一堆条件语句来验证这一点: $item = "candy"; switch ($item) { case...,并且根据输入,它将返回字符串或数组。...解决方案是检查输入是否为数组,在其上循环以获取数组中的字符串,然后对这些字符串执行数据获取,如下所示。...让我们看看类型如何在以后拯救我们的生命: function getItem($item) { // $item is expected to be an array // for whatever...有很多选择: Laravel:如果您喜欢魔术,Laravel会为您做所有事情(除非您另有决定) Slim:其余的API框架,具有“自带”氛围 Leaf:这是我在Slim和Laravel的启发下写的,它为您提供了可以控制的魔术

    3.1K40

    通过 Laravel 表单请求类实现字段验证和错误提示

    在上一篇教程中,我们已经演示了如何在控制器方法中对表单请求字段进行验证,并且提到如果请求字段很多很复杂,都写到控制器方法里面会导致控制器臃肿,从单一职责原则来说需要将表单请求验证拆分出去,然后通过类型提示的方式注入到控制器方法...title.string' => '标题字段仅支持字符串', 'title.between' => '标题长度必须介于2-32之间', 'url.url' => 'URL格式不正确,请输入有效的...'); } Laravel 底层在解析这个控制器方法的参数时,如果发现这个请求是一个表单请求类,则会自动执行其中定义的字段验证规则对请求字段进行验证,如果验证成功则继续执行控制器中的方法,否则会抛出验证失败异常...数组请求字段验证 某些场合下,我们的表单请求中可能会包含数组字段,比如 books[] 或者 books[author],甚至可能是更加复杂的 books[test][author],对于这种数组字段的验证...# 验证 books[author] 'books.*.author' => 'required|max:10', # 验证 books[test][author] 更多请求验证字段规则,请查看 Laravel

    3.9K30

    Laravel5.2之Validator

    引言: Laravel提供了Validator模块,可解决表单提交验证等一些需求,并且可以在视图View中显示错误验证信息,交互还是很友好的。注明:作者水平有限,有错误或建议请指正,轻拍。...5、定制显示错误信息 错误信息是由laravel默认的,如果自定义显示错误信息,: public function postValidator(Request $request){ /...@postValidator'); }); (二)、验证数组形式表单 有时候在写表单时,需要同时输入相类似的表单输入时,可以把这些input作为数组看待,laravel5.2也提供了数组形式的验证...; } 不填写输入直接提交表单,错误信息显示: 或者 (三)、定制一个表单请求类,把验证规则从控制中抽取出来 有时候,把验证规则逻辑单独放在一个类里,使得控制器代码更加简约...1、在TestValidatorRequest类里写验证规则 authorize()方法主要用来设置用户权限,返回false时会返回一个403并且控制器代码不能执行,没有权限的用户不能提交表单。

    13.3K31

    PHP面试题集锦

    如许多PHP函数,require可以包含URL或文件名。 防止: 过滤用户输入 在php.ini中设置禁用allow_url_fopen和allow_url_include。...)返回输入数组中某个单一列的值; ⑤array_combine()通过合并两个数组来创建一个新数组; ⑥array_reverse()以相反的顺序返回数组; ⑦array_unique()删除数组中的重复值...; ⑧in_array()检查数组中是否存在指定的值; PHP7 和 PHP5 的区别,具体多了哪些新特性?...(1)开放封闭原则:一个软件实体类、模块和函数应该对扩展开放,对修改关闭。 (2)里氏替换原则:所有引用基类的地方必须能透明使用其子类的对象。...单例模式应用的场景一般发现在以下条件下: (1)资源共享的情况下,避免由于资源操作时导致的性能或损耗等。如上述中的日志文件,应用配置。 (2)控制资源的情况下,方便资源之间的互相通信。线程池等。

    6.9K20

    Laravel 控制器中进行表单请求字段验证

    很多 Web 框架都对此功能专门提供了工具集,Laravel 也不例外,而且这个工具集异常丰富,基本上涵盖了目前主流的所有验证规则,即使是一些非常个性化的验证,也可以基于 Laravel 验证类的扩展功能来自定义验证规则...接下来,我们就一起来看看如何在 Laravel 中对表单请求进行验证。...作为一个灵活的框架,Laravel 提供了多种方式对表单请求进行验证,你可以在控制器中通过 $this->validate() 方法验证用户请求,也可以通过单独的表单验证类定义验证规则,再将其注入到相应的控制器方法...'); } 在该方法中,第一个参数是用户请求实例,第二个参数是以数组形式定义的请求字段验证规则,关于所有字段验证规则及其说明你可以在验证规则文档中查看,这里我们定义 title 字段是必填的,格式是字符串...,就可以回显用户上次输入数据和验证错误信息了: ?

    5.8K10

    Laravel Validation 表单验证(二、验证表单请求)

    由于此规则通常要求您 implode 数组,因此可以使用 Rule :: in 方法流畅构造规则: use Illuminate\Validation\Rule; Validator::make($...required 验证的字段必须存在于输入数据中,而不是空。如果满足以下条件之一,则字段被视为「空」: 值为 null 。 值为空字符串。 值为空数组或空 Countable 对象。...按条件增加规则 存在时则验证 在某些情况下,你可能希望将要验证的字段存在于输入数组中时,才对该字段执行验证。...第二个参数是我们想使用的验证规则。 闭包 作为第三个参数传入,如果其返回 true , 则额外的规则就会被加入。这个方法可以轻松创建复杂的条件验证。...验证数组 验证表单的输入数组的字段也不难。你可以使用 「点」方法来验证数组中的属性。

    29.3K10

    Laravel5.2之Demo1——URL生成和存储

    这里注意下:如果不写table变量,laravel会自动根据model名字复数来找数据表,这个model名字是link,那就找links表。...(1)、验证输入 在提交表单时都要验证输入数据是否符合规定,免得让脏数据进入数据表里,laravel提供了Validation模块来做表单验证并且可以在视图中显示验证错误信息,具体想了解下的可以看我这篇文章...在验证表单时首先需要写验证规则$rules,本demo仅有一个输入输入要符合URL格式,那就要考虑两个问题:怎么得到表单的输入$input和怎么写符合URL的$rules验证规则。...'是输入不能为空,是laravel自带的验证规则,'url'也是laravel自带的URL验证规则,就是格式得符合URL格式,'|'表示且的意思。...,很有用,验证通过(validation->passes())和验证失败(validation->fails()),这两个函数返回Boolean结果,还有 public function getUrl

    24.1K31

    PHP-web框架Laravel-中间件(一)

    Laravel中,中间件是处理HTTP请求的一种机制。它可以用来检查请求是否满足某些条件,比如是否已经进行了身份验证或者是否有足够的权限来访问某个资源。...中间件的基本使用在Laravel中,中间件可以通过路由或控制器来指定。...这意味着只有经过身份验证的用户才能访问该路由。中间件类Laravel中的中间件实际上是PHP类。在创建中间件时,可以选择手动创建类,也可以使用Laravel提供的中间件生成器来自动生成。...例如,以下代码演示了如何在中间件组中注册中间件:protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies...web中间件组包含一组用于Web应用程序的中间件,加密Cookie、启动会话和验证CSRF令牌。api中间件组包含一组用于API的中间件,速率限制和API身份验证。在路由中使用中间件。

    3.3K31

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

    laravel把用户的输入存储在 Input 对象内,而从逻辑上看,用户输入应该归属于请求项的,所以 Request 也继承了 Input 的方法和数据。...所以就有必要使用 exists 单纯判断键的存在与否,大家用的时候一定要注意这个细微的差别。...内获取数组可以使用点式方式读取,这是因为laravel解析的时候使用了助手类 Arr 的通用方法。...写在最后 本文几乎涵盖了用户输入input方法的最为常用的一些方法,我们只讲了怎么正常获取用户数据,没有讲如何验证数据有效性。因为前端验证几乎形同虚设,最后能写到数据库的数据,还是要应用程序把关。...那就是验证器的工作了,验证器,我们放到后续章节再详细讲。 Happy coding :-) 我是@程序员小助手,专注编程知识,圈子动态的IT领域原创作者

    1.5K00

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

    laravel把用户的输入存储在 Input 对象内,而从逻辑上看,用户输入应该归属于请求项的,所以 Request 也继承了 Input 的方法和数据。...所以就有必要使用 exists 单纯判断键的存在与否,大家用的时候一定要注意这个细微的差别。...内获取数组可以使用点式方式读取,这是因为laravel解析的时候使用了助手类 Arr 的通用方法。...写在最后 本文几乎涵盖了用户输入input方法的最为常用的一些方法,我们只讲了怎么正常获取用户数据,没有讲如何验证数据有效性。因为前端验证几乎形同虚设,最后能写到数据库的数据,还是要应用程序把关。...那就是验证器的工作了,验证器,我们放到后续章节再详细讲。 Happy coding :-) 我是@程序员小助手,专注编程知识,圈子动态的IT领域原创作者

    1.4K10

    3分钟短文:Laravel模板,也支持一般编程语言的语法结构了

    laravel的模板系统,还提供了很多常用的编程语言的语法结构,其实是PHP的变体, 可以让编程人员更好掌控HTML输出。 本期就来说说模板内的程序结构的高阶用法。...> 这对常规变量无害,可是对于非法的操作,比如是用户输入的内容,直接展示的话,有可能造成文件和数据库等等的风险, 所以对变量要做一次转义,将其内容原封不动地用字符串的方式展现出来,这样做其实非常有必要。...循环结构 通常动态数据由数组方式构成,我们不可能在模板内一个一个书写,那样就造成了重复劳动。 模板内要是有循环判断结构,效果就好多了,写一次,无论来多少数据,都只需写一次结构。...模板内代码如下: 访问该路由地址之后,生成的HTML页面内容如下: 当然了,对于数组我们免不了使用判空的条件,模板语法如下: 判断条件 有了循环结构,判断条件也不能少。...我们对上一节的示例代码添加条件判断,如果数组 $events 的元素内含有 Laravel 字符, 则追加输出 (sweet framework)。 直接上代码: 注意模板内使用 @if ...

    2K00

    laravel框架学习记录之表单操作详解

    /js/app.js')}}" </script 3、laravel中实现分页 在laravel中可以很便捷实现分页数据显示,第一步是在controller中分页取出数据库数据并传递给页面: return...laravel提供了validate方法来用于验证用户提交的表单是否符合要求,例如在页面通过post提交了学生表单form后,在controller中对其先进行验证,如果正确则存入数据库,否则返回到上一页面并抛出一个异常...Student.sex'= '性别' ]); //存入学生数据 $stu=$request- input('Student'); Student::create($stu); validate()中第一个数组中定义字段的验证规则...是你所需要的验证规则,中间用”|”隔开,详细的规则可以看文档 validate()第二个数组自定义验证出错后的提示信息,”:attribute”为占位符 validate()第三个数组自定义每个字段的提示名字...,显示在每个输入框之后 <p class="form-control-static text-danger" {{$errors- first('Student.name')}}</p 当验证失败返回到表单页面后

    12.6K30

    Laravel框架关键技术解析

    语法 A.组件化开发语法条件 1.命名空间 PHP命名空间只支持导入类,而不支持导入函数或常量 对命名空间中的名称来说,最前面是不允许有反斜杠的 对完全限定名称的函数、类和常量可以直接解析 对所有非限定名称和非完全限定名称的函数...示例:Illuminate\Database\Eloquent\Model.php,query()方法中(new static)->newQuery(); F.Laravel中使用的其他新特性 1.trait...Laravel框架中,在解析请求生成响应之前或之后需要经过中间件的处理,主要包括验证维护模式、Cookie加密、开启会话、CSRF保护等,而这些处理有些是在生成响应之前,有些是在生成响应之后 2.请求处理管道...,在使用服务容器进行解析时,如果发现这个服务在延时服务数组中,则会注册 D.响应的发送与程序终止 八、服务容器与服务提供者 A.服务容器 1.Laravel中服务容器相当于大脑,服务提供者相当于神经系统...回调函数的绑定还分为两种: 普通绑定每次生成该服务的实例对象时都会生成一个新的实例对象,也就是说在程序的生命周期中,可以同时生成很多个这种实例对象 单例绑定在生成一个实例对象后,如果再次生成就会返回第一次生成的实例对象 7.

    12K20

    Laravel5.1 框架Middleware中间件基本用法实例分析

    { return $next($request); } } 解读:middleware中只有 “handle”函数 这个函数呢接受两个参数 它的流程是接受request参数 取出一些东西做验证...把我们创建的middleware注册到这里 'test' = \App\Http\Middleware\TestMiddleware::class, ]; 注意:我们可以瞧见啊 Kernel 中有两个数组...如果你希望在全局中使用 就注册在middleware数组中,如果你想要局部使用middleware 那么就在routeMiddleware数组中注册。...id=1 时会在页面上输出HI 当输入 http://localhost:8000/test-middleware?id=0 时会返回首页。...更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及

    63420

    3分钟短文:Laravel路由注册,你必须掌握的“动词”!

    本期为大家说一说用laravel注册路由的那些必知必会的方法。 代码时间 遵循编程惯例,首先实现一个 hello world 的示例。...function () {}); 除了使用闭包返回数据,路由注册也可以指向控制器方法,比如这样: Route::get('/', 'WelcomeController@index'); 动态路由需要用户提供更多个输入参数...如果路由内声明了多个位置参数,且都需要验证,那么在 where 方法内传入参数名 + 正则的数组即可: Route::get('posts/{id}/{slug}', function ($id, $slug...) { // })->where(['id' => '[0-9]+', 'slug' => '[A-Za-z]+']); 有了这样的条件约束方法,你完全可以利用正则的强大的功能,组装出更强劲的验证...写在最后 本文初步介绍了laravel内注册一条路由的方法,简单讲解了位置参数的传入和接收,以及在路由内添加正则表达式赋能的条件约束方式。都是基础而且使用的,大家一定要牢固掌握。

    42620

    # 3分钟短文:Laravel路由注册,你必须掌握的“动词”!

    本期为大家说一说用laravel注册路由的那些必知必会的方法。 代码时间 遵循编程惯例,首先实现一个 hello world 的示例。...function () {}); 除了使用闭包返回数据,路由注册也可以指向控制器方法,比如这样: Route::get('/', 'WelcomeController@index'); 动态路由需要用户提供更多个输入参数...如果路由内声明了多个位置参数,且都需要验证,那么在 where 方法内传入参数名 + 正则的数组即可: Route::get('posts/{id}/{slug}', function ($id, $slug...) { // })->where(['id' => '[0-9]+', 'slug' => '[A-Za-z]+']); 有了这样的条件约束方法,你完全可以利用正则的强大的功能,组装出更强劲的验证...写在最后 本文初步介绍了laravel内注册一条路由的方法,简单讲解了位置参数的传入和接收,以及在路由内添加正则表达式赋能的条件约束方式。都是基础而且使用的,大家一定要牢固掌握。

    72222
    领券