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

Laravel验证规则required_if另一个字段值在数组中,不起作用

是指在使用Laravel框架进行表单验证时,当指定字段的值在给定的数组中时,required_if规则无法正常工作的情况。

在Laravel中,required_if规则用于指定某个字段在满足特定条件时必须存在。通常情况下,我们可以使用required_if规则来验证某个字段是否必填,但是当需要判断字段的值是否在一个数组中时,有时候required_if规则可能会出现不起作用的情况。

解决这个问题的方法是使用自定义验证规则。我们可以通过创建自定义验证规则来实现对字段值是否在数组中的验证。下面是一个示例的自定义验证规则的代码:

代码语言:txt
复制
namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class InArray implements Rule
{
    protected $array;

    public function __construct($array)
    {
        $this->array = $array;
    }

    public function passes($attribute, $value)
    {
        return in_array($value, $this->array);
    }

    public function message()
    {
        return 'The selected :attribute is invalid.';
    }
}

然后,在进行表单验证时,我们可以使用这个自定义验证规则来验证字段的值是否在数组中。示例代码如下:

代码语言:txt
复制
use App\Rules\InArray;

$request->validate([
    'field1' => [
        'required_if:field2,' . implode(',', $array),
        new InArray($array)
    ],
]);

在上面的代码中,我们首先使用required_if规则来判断字段的值是否在数组中,然后使用自定义验证规则InArray来进一步验证字段的值是否在数组中。

这样,就可以解决Laravel验证规则required_if另一个字段值在数组中不起作用的问题。

关于Laravel的表单验证规则和自定义验证规则的更多信息,可以参考腾讯云的Laravel文档:Laravel 表单验证

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

相关·内容

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

他们会自动被 Laravel 提供的 [服务容器] 自动解析。 所以,验证规则是如何运行的呢?你所需要做的就是控制器方法类型提示传入的请求。...array 验证字段必须是一个 PHP 数组。 bail 第一次验证失败后停止运行验证规则。 before:date 正在验证字段必须是给定日期之前的。...这个日期将传递到 PHP 的 strtotime 函数。此外,与 [after]规则一样,另一个正在验证字段可以作为 date 的。...按条件增加规则 存在时则验证 某些情况下,你可能希望将要验证字段存在于输入数组时,才对该字段执行验证。...例如,你可以希望某个指定字段另一个字段超过 100 时才为必填。或者当某个指定字段存在时,另外两个字段才能具有给定的。增加这样的验证条件并不难。

29.3K10

laravel 数据验证规则详解

' = '验证字段必须存在于另一个字段', 'integer' = '整数', 'ip' = 'ip地址', 'ipv4' = 'ipv4地址', 'ipv6' = 'ipv6地址',...' = '验证字段必须与给定正则表达式匹配', 'required' = '验证字段必须存在于输入数据,但不可以为空', //以下情况视为空:1.该为null,2.空字符串,3.空数组或空的可数对象...,只有字段存在于输入数组时,才可以对字段执行验证检查 $v = Validator::make($data,[ 'email' = 'sometimes|required|email',//email...只有data数组时才会被验证 ]); $z = Validator::make($data,[ 'email' = 'required|email', 'games' = 'required|numeric...- has('email')){ } 以上这篇laravel 数据验证规则详解就是小编分享给大家的全部内容了,希望能给大家一个参考。

2.9K31
  • Laravel Validation 表单验证(一、快速验证

    默认情况下,Laravel 的控制器基类使用 ValidatesRequests trait,它提供了一种方便的方法去使用各种强大的验证规则验证传入的 HTTP 请求。...', ]); 在这个例子,如果 title 字段没有通过 unique 规则,那么程序就不会继续检查 max 规则。...关于数组数据的注意实现 如果你的 HTTP 请求包含一个 「嵌套」 参数(即数组),那你可以验证规则通过 「点」 语法来指定这些参数: $request->validate([ 'title...关于可选字段的注意事项 默认情况下, Laravel 应用的全局中间件堆栈 App\Http\Kernel 类包含了 TrimStrings 和 ConvertEmptyStringsToNull...因此,如果你不希望验证程序将 null 视为无效的话,那就需要将「可选」的请求字段标记为 nullable,举个例子: $request->validate([ 'title' => 'required

    3.8K10

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

    rules() 方法定义请求字段验证规则,比如我们可以将上一篇教程字段验证规则移到该方法: public function rules() { return [ 'title...$request) { return response('表单验证通过'); } Laravel 底层解析这个控制器方法的参数时,如果发现这个请求是一个表单请求类,则会自动执行其中定义的字段验证规则对请求字段进行验证...我们测试下表单请求,会发现和在控制器方法通过 $this->validate() 验证字段的结果一样: ? 这样一来,以后我们就可以表单请求类维护字段验证逻辑了,完成了请求验证和控制器的解耦。...数组请求字段验证 某些场合下,我们的表单请求可能会包含数组字段,比如 books[] 或者 books[author],甚至可能是更加复杂的 books[test][author],对于这种数组字段验证...# 验证 books[author] 'books.*.author' => 'required|max:10', # 验证 books[test][author] 更多请求验证字段规则,请查看 Laravel

    3.9K30

    3分钟短文 | Laravel表单验证规则可用?你试试自定义,真香!

    引言 Laravel内部提供了很多用于表单验证规则,都是通过 Validator 对象进行解析和处理。但是我们会遇到现有规则无法满足验证需求的情况。 ?...今天我们就来说一个需求,如何验证一个整数字段比另外一个整数字段大?...required_with 选项限制一个另一个字段存在时执行的验证规则。...那么如何实现,end_page 字段,一定比 initial_page 的大呢?为了验证方式的统一,不准备把这个规则写到控制器逻辑内。用laravel的方式该如何实现呢?...laravel内我们可以使用扩展功能,自定义验证规则,扩展 Validator 对象的验证规则。我们需要把扩展规则写到 AppServiceProvider 内,使得系统加载时可以正确地使用。

    59520

    3分钟短文 | Laravel 表单验证数组的数据

    引言 本文说一个小的知识点,表单验证,对数组数据进行验证, 我们需要进行两项,一项是数组本身的验证,一项是数组元素的验证。 ?...明确了需求,我们发现上述的验证laravel内置的规则基本可以解决。只是对于字段数组,且数组长度满足某些条件的要求,有些苛刻。具体如何实现呢?...laravel表单验证规则,使用星号,可以匹配数组的元素。...那么laravel验证,应该如何写呢? 这与指定了字段名的数组不同,这个数组的键是自动编排的数字,所以,我们需要通配键名。...写在最后 本文介绍了两种表单格式的数据的验证,一种是指定字段名的一维数组,一种是二维关联数组验证, 如果有条件的大家可以看一下框架在这种处理验证规则的处理逻辑代码。

    3.6K10

    3分钟短文 | Laravel 内3种数据校验的写法,你喜欢哪一个?

    这就是本文的重点,说一说laravel输入请求的校验。 学习时间 假设请求Request内有一个 names 字段,传送的是一个数组,对于数组,我们应该如何校验呢?...其实需要两步,第一步校验names字段本身必须是数组,其次校验数组的元素规则。...第一个规则下,验证了names字段必须为array类型,且长度至少为3。 接着使用星号匹配数组内元素,要求都是string字符串,且不得重复 distinct,且每个字符串长度最小为3。...laravel 5.5 以后的版本,你无需手动实例化 Validaor 对象,可以 Request 对象直接调用 validate 方法实现。...自定义验证 laravel内你也可以自定义验证规则,使用 artisan 命令新建一个验证类: php artisan make:request SomeRequest

    1.2K20

    Laravel 表单 size 验证数字

    验证一个数字的确定,看了表单验证文档 size:value验证字段必须具有与给定匹配的大小。对于字符串来说,value 对应于字符数。对于数字来说,value 对应于给定的整数值。...对于数组来说, size 对应的是数组的 count 。对文件来说,size 对应的是文件大小(单位 kb )。...写的验证规则是这样的 $data = ['age' => 9]; $validator = \Illuminate\Support\Facades\Validator::make($data, ['age...($attribute, $rule); Laravel 前面这些是过滤,验证文件上传的 Laravel 这里动态拼接了一个方法,通过打印得知是validateSize Laravel 然后在这个类用的...Laravel 再看一下他是如何验证Laravel Laravel 如果没有numeric或者integer会返回 null,就会导致$hasNumeric等于 false Laravel

    16010

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

    通过composer安装也很简单,就是项目根目录下的composer.json文件'require'数组添加"laravelcollective/html": "5.2....(1)、验证输入 提交表单时都要验证输入数据是否符合规定,免得让脏数据进入数据表里,laravel提供了Validation模块来做表单验证并且可以视图中显示验证错误信息,具体想了解下的可以看我这篇文章...验证表单时首先需要写验证规则$rules,本demo仅有一个输入且输入要符合URL格式,那就要考虑两个问题:怎么得到表单的输入$input和怎么写符合URL的$rules验证规则。...'是输入不能为空,是laravel自带的验证规则,'url'也是laravel自带的URL验证规则,就是格式得符合URL格式,'|'表示且的意思。...6、从数据库取出URL并且重定向 最后根据生成的URL获取其hash部分,根据hash从links数据表取出对应的URL为了重定向,这里英文原文也是路由中写逻辑,这里也路由里写逻辑: Route

    24.1K31

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

    Laravel 验证器的强大之处不仅在于提供前面提到的多种请求验证方式,以及非常丰富的字段验证规则(不同规则可以组合形成新的验证规则),从 5.5 版本开始,还支持自定义字段验证规则。...通过匿名函数实现自定义规则 我们先演示下如何在控制器方法调用 $this->validate() 时自定义验证规则,以 title 字段为例,除了系统提供的字段验证规则之外,有时候我们还会禁止用户输入包含敏感词的字段...,我们国家,这也是司空见惯的事情,那要如何实现这个 Laravel 办不到的事情呢,通过自定义验证规则: $this->validate($request, [ 'title' => [...,然后将自定义规则以匿名函数的方式添加到数组最后,如上面的代码所示,该匿名函数第一个参数是字段名,第二个参数是字段,第三个参数是校验失败用于返回的函数名。..., $value) { return strpos($value, '敏感词') === false; } 如果输入包含敏感词,则认为验证失败,然后 message 方法修改验证失败的错误消息

    2.9K20

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

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

    12.6K30

    Laravel 参数验证的疑与惑

    然后AppServiceProvider重新绑定新的验证器工厂创建类; 二,AppServiceProvider通过resolver方法设置工厂类的resolver属性,接管验证器的实例化,例如:...1 通过extend方法扩展 //这是一个简单的参数比较的验证规则Laravel5.8提供,Laravel5.5未提供 //验证规则如下: 'max_num'=>'gte:min', Validator...验证验证参数的过程,如果找到匹配的验证规则,则直接进行验证。否则调用魔术方法__call查找扩展验证函数。扩展函数返回布尔,返回true则表示验证通过,返回false表示验证失败。...从而导致在当前扩展的验证规则,只能过获取到需要验证的数据,而获取不到其他的字段数据,无法进行联合字段验证。像上面比较两个字段的大小的验证规则就无法实现。...例如,一个验证规则如下,表示用当期类的validateMinNum对参数进行验证,那么,这样的一个功能,如何在Laravel实现呢。

    3.4K00

    关于Laravel参数验证的一些疑与惑

    然后AppServiceProvider重新绑定新的验证器工厂创建类; 二,AppServiceProvider通过resolver方法设置工厂类的resolver属性,接管验证器的实例化,例如:...1 通过extend方法扩展 //这是一个简单的参数比较的验证规则Laravel5.8提供,Laravel5.5未提供 //验证规则如下: 'max_num'= 'gte:min', Validator...验证验证参数的过程,如果找到匹配的验证规则,则直接进行验证。否则调用魔术方法__call查找扩展验证函数。扩展函数返回布尔,返回true则表示验证通过,返回false表示验证失败。...从而导致在当前扩展的验证规则,只能过获取到需要验证的数据,而获取不到其他的字段数据,无法进行联合字段验证。像上面比较两个字段的大小的验证规则就无法实现。...例如,一个验证规则如下,表示用当期类的validateMinNum对参数进行验证,那么,这样的一个功能,如何在Laravel实现呢。

    6.6K31

    为什么 Laravel 这么优秀?

    Model 的 Factory 规则,我们就能轻松的开发阶段模拟出一个关系完整的数据。...而 Laravel 提供的 FormRequest 就可以非常方便的做到这一点;你可以 FormRequest 定义前端传入的每一个字段验证规则。...会直接帮我们验证并返回错误信息,如下面的 teacher_id 在数据库并不存在。...另一个优秀的地方是为我们提供了超级多的辅助函数;有操作数组的 Arr,操作字符串的 Str,操作集合的 Collection,操作时间的 Carbon 等。...container 设置不同的;如 CacheServiceProvider 会向容器中注册 Cache 对象,后续使用 Cache::get 时就使用的是这里注册的 Cache 对象,注册阶段不应该向容器获取值

    22610

    3分钟短文:Laravel的“南天门”,过滤掉七七八八的数据

    ,就是传入的 $request 对象,验证器内默认会使用 $request->all() 或 $request->input() 获取全部的输入字段和数据。...validate 方法传入的第二个参数,是一个验证规则数组。...上面列出来的都是内置规则,简单介绍一下吧: required : 这个字段必填 unique : 数据库这个字段必须唯一不重样 max : 这个字段最长125个字符 那么有的同学会立马提出疑问: 那个...}); 大家看到了,验证规则部分没有一丝丝改变,只是传入的 $request 请求对象我们必须调用 all() 方法对其格式化为数组。...还有验证规则,千奇百怪,内置的规则都有很多,用得到的,用不到的,处理复杂业务逻辑的时候, 还要祭出自定义验证规则这把大宝剑,不过都是后话了。

    1.1K00

    3分钟短文:Laravel的“南天门”,过滤掉七七八八的数据

    如果你对源码稍加留意,可能就会注意到,laravel的 Controller 类引入了 ValidatesRequests 这个验证 trait。...,就是传入的 request 对象,验证器内默认会使用 request->all() 或 validate 方法传入的第二个参数,是一个验证规则数组。...上面列出来的都是内置规则,简单介绍一下吧: required : 这个字段必填 unique : 数据库这个字段必须唯一不重样 max : 这个字段最长125个字符 那么有的同学会立马提出疑问: 那个...}); 大家看到了,验证规则部分没有一丝丝改变,只是传入的 $request 请求对象我们必须调用 all() 方法对其格式化为数组。...还有验证规则,千奇百怪,内置的规则都有很多,用得到的,用不到的,处理复杂业务逻辑的时候, 还要祭出自定义验证规则这把大宝剑,不过都是后话了。

    1.9K10

    为你的 Laravel 验证器加上多验证场景的实现

    前言 我们使用 laravel 框架的验证器,有的时候需要对表单等进行数据验证,当然 laravel 也为我们提供了 Illuminate\Http\Request 对象提供的 validate...这些错误也会被闪存到 Session ,以便这些错误都可以页面显示出来。如果传入的请求是 AJAX,会向用户返回具有 422 状态代码和验证错误信息的 JSON 数据的 HTTP 响应。...那么给 laravel 加上一个验证场景通过一个验证类一个模块或多个模块来适应不同的场景不就方便很多了。...自定义场景 protected $scene = [ 'add'= "title,content", 'edit'= ['id','title','content'], ]; } 如上所示,在这个类我们定义了验证规则...场景验证 我们需要提前验证定义好验证场景 如下,支持使用字符串或数组,使用字符串时,要验证字段需用 , 隔开 //自定义场景 protected $scene = [ 'add'= "title

    2.8K10

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

    很多 Web 框架都对此功能专门提供了工具集,Laravel 也不例外,而且这个工具集异常丰富,基本上涵盖了目前主流的所有验证规则,即使是一些非常个性化的验证,也可以基于 Laravel 验证类的扩展功能来自定义验证规则...接下来,我们就一起来看看如何在 Laravel 对表单请求进行验证。...作为一个灵活的框架,Laravel 提供了多种方式对表单请求进行验证,你可以控制器通过 $this->validate() 方法验证用户请求,也可以通过单独的表单验证类定义验证规则,再将其注入到相应的控制器方法...'); } 该方法,第一个参数是用户请求实例,第二个参数是以数组形式定义的请求字段验证规则,关于所有字段验证规则及其说明你可以验证规则文档查看,这里我们定义 title 字段是必填的,格式是字符串...对于大量请求字段,或者复杂的请求验证,都写到控制器方法显然会导致控制器的代码变得臃肿,可维护性也比较差,所以我们下一篇教程将讨论如何将验证代码移出控制器这一话题,并且根据项目需求灵活实现自定义验证规则

    5.8K10
    领券