仅当另一个字段有值时才为必填字段,否则必须为空

2023-11-24

我的问题是关于 Laravel验证规则.

我有两个输入a and b. a是具有三个可能值的选择输入:x, y and z。我想写这个规则:

b must有一个价值only if a values is x。 和b must否则为空。

有没有办法写这样的规则?我试过required_with, required_without但似乎它不能涵盖我的情况。

换句话说,如果前面的解释还不够清楚的话:

  • If a == x, b必须有一个值。
  • If a != x, b必须为空。

您必须创建自己的验证规则。

Edit app/Providers/AppServiceProvider.php并将此验证规则添加到boot method:

// Extends the validator
\Validator::extendImplicit(
    'empty_if',
    function ($attribute, $value, $parameters, $validator) {
        $data = request()->input($parameters[0]);
        $parameters_values = array_slice($parameters, 1);
        foreach ($parameters_values as $parameter_value) {
            if ($data == $parameter_value && !empty($value)) {
                return false;
            }
        }
        return true;
    });

// (optional) Display error replacement
\Validator::replacer(
    'empty_if',
    function ($message, $attribute, $rule, $parameters) {
        return str_replace(
            [':other', ':value'], 
            [$parameters[0], request()->input($parameters[0])], 
            $message
        );
    });

(选修的)创建错误消息resources/lang/en/validation.php:

'empty_if' => 'The :attribute field must be empty when :other is :value.',

然后在控制器中使用此规则(使用require_if尊重原帖的两条规则):

$attributes = request()->validate([
    'a' => 'required',
    'b' => 'required_if:a,x|empty_if:a,y,z'
]);

有用!

旁注:我可能会为这个需要创建一个包empty_if and empty_unless并在此处发布链接

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅当另一个字段有值时才为必填字段,否则必须为空 的相关文章

  • 根据数组计数填充复选框

    我是新来的php我已经使用了它的开发php array 我想填充checkboxes根据数组计数 为了做到这一点 我尝试了以下方式 它对我不起作用 有什么方法可以做到这一点 在我的例子中 数组计数 5 所以我相应地需要 5 个复选框
  • PMA 4.5.2.0 file_exists():open_basedir 限制生效

    从 PPA 在我的 Ubuntu 服务器上安装 phpMyAdmin 后 https launchpad net nijel archive ubuntu phpmyadmin https launchpad net nijel archi
  • 使用 PhpStorm 删除 CakePHP 中的插件后出现“成员有私人访问错误”

    从我的 CakePHP 框架中删除插件以及与其关联的所有代码行后 我在以下位置收到错误getInitializer的功能autoload static php in my vendor gt composer folder public s
  • 为什么当尝试使用 $this->data 访问 CakePHP 时,密码字段为空?

    我正在实现一个身份验证组件 这是我的注册页面 create User array action gt login echo form gt input primary email array size gt 32 echo form gt
  • 从twitter api实体参数php获取图像url

    我正在尝试通过实体参数使用 php 获取并显示在推文中发布的图像 我的 url 中有 include entities 可以看到返回的 json 中的实体 在我的 foreach 循环中 我正在执行以下操作 foreach results
  • 使用 PHP/COM/ADSI/LDAP 更改 AD 密码

    我已经被这个问题困扰了好几天了 我尝试了各种解决方案均无济于事 请帮忙 Problem 我们有两个域控制器 它们不属于我们的管理范围 我们能够通过端口 389 上的 LDAP 进行连接 但无法通过端口 636 安全连接 我们正在开发一个系统
  • 基本表创建 fpdf

    我找不到使用 fpdf 制作表格并从 mysql 数据库获取数据的合适教程 我只是想知道如何创建一个 我在网上尝试示例时遇到了很多错误 例如 我有 名字 中间名 姓氏 年龄 和 电子邮件 列 如何使用 fpdf 创建表格并回显数据库中的条目
  • PHP:如何防止不必要的换行

    我正在使用 PHP 创建一些基本的 HTML 标签始终相同 但实际链接 标题对应于 PHP 变量 string p a href strong i title i i strong a br echo string fwrite outfi
  • 使用 HTTP-Basic 身份验证发出 HTTP GET 请求

    我需要为我正在开发的 Flash Player 项目构建一个代理 我只需要使用 HTTP Basic 身份验证向另一个 URL 发出 HTTP GET 请求 并提供来自 PHP 的响应 就好像 PHP 文件是原始源一样 我怎样才能做到这一点
  • 将 PHP mcrypt 与 Rijndael/AES 结合使用

    我正在尝试使用 php 中的 mcrypt 和密码 Rijndael 加密一些文本消息 但我不确定 MCRYPT MODE modename 根据 PHP 手册 这些可用 ecb cbc cfb ofb nofb 或 stream 但我读到
  • Facebook 中用户的时区是如何编码的

    我需要检查用户的时区 但我找不到它的真正定义 参考API http developers facebook com docs reference api user says 用户的时区与 UTC 的偏移量 现在在维基百科上这些是可能的时区
  • Facebook Graph API v3.1 开发人员访问令牌权限限制

    如您所知 Facebook 将其 API 升级到了 V3 1 现在正在慢慢地淘汰旧的 API 和应用程序 因此我们必须迁移到新的 API 他们做出了一些艰难的决定 这对垃圾邮件网站来说是好事 但对开发人员来说也很难 提醒 Graph API
  • 如何比较两个碳时间戳?

    我有两个时间戳 edited at 我创建的 和created at Laravel 的 在数据库中 两者都有时间戳类型和默认值 0000 00 00 00 00 00 但是 var dump edited at variable 正在给出
  • 访客客户检查 Woocommerce 订单账单电子邮件时可享受首单折扣

    通过对照正在处理和已完成的订单检查来宾客户的电子邮件地址 如果电子邮件没有订单 我想给来宾 首单折扣 如果这能在客人输入电子邮件时发生 那就太好了 我想我已经成功制作了折扣代码 现在我请求帮助合并这两个代码 使其一切正常 这是折扣代码 ad
  • Laravel Group By 和 Order By 不起作用

    我尝试制作一个Laravel 5 8项目 项目中的数据是这样的 id purch name prcvalue 1 10234 Nabila 100 2 10234 Nadeera 450 3 10234 Nabila 540 4 10234
  • Twig:选择某些块并渲染它们

    我正在将 twig 模板引擎集成到 PHP 应用程序中 特别是 我想使用 twig 引擎来渲染表单 了解了 symfony2 如何使用 twig 渲染表单小部件后 他们有一个巨大的模板文件 其中包含所有小部件 如下所示 block pass
  • 在 Apache 服务器上将特定的 .htm 页面处理为 .php [重复]

    这个问题在这里已经有答案了 我正在为 Apache 服务器编程 并且只需要将一个特定的 html 页面 例如 first htm 作为 PHP 脚本进行处理 可以设置吗 SetHandler http httpd apache org do
  • 如何将 yii2 Restful api 中两个表的关系数据显示为 json 格式

    我遇到了将两个表中的数据显示为 JSON 格式并在 yii2 Restful api 上工作的问题 这是我的结构数据库 TABLE volunteer volunteer id int 11 NOT NULL auto increment
  • 如何使用 PHP 从 MySQL 检索特定值?

    好吧 我已经厌倦了 过去一周我花了大部分空闲时间试图解决这个问题 我知道 SQL 中的查询已更改 但我无法弄清楚 我能找到的所有其他帖子似乎都已经过时了 如果有人能帮助我 我将非常感激 我想做的就是使用手动输入数据库的唯一 密码 来检索行的
  • 无法与站点通信以检查致命错误

    无法与站点通信以检查致命错误 因此 PHP 更改已恢复 您需要通过其他方式上传 PHP 文件更改 例如使用 SFTP 有什么解决办法 我正在 WordPress 中编辑头文件 遇到这个问题 尝试这个 我有同样的问题并决定调查一下 更改 wp

随机推荐

  • 调用 CallVoidMethod 时 JNI 崩溃

    我正在尝试从 Android 应用程序中的本机 C 代码调用 java 方法 使用 JNI 听起来很简单 但我的代码在最终调用方法本身时总是崩溃 这是我的代码 本机 C 代码 JNIEXPORT void JNICALL Java com
  • 如何更改 XAMPP 中 PHP 的默认路径?

    我正在使用 xampp 来部署 Web 应用程序 它将 PHP 模块包含在一个包中 现在我想做的是更改 PHP 的默认路径 以便我可以使用其他版本的 PHP 而无需覆盖现有模块 我的新 PHP 副本存在于桌面上 如何配置 Apache 以引
  • 将 JPanel 上的组件置于前面 (Java)

    在VB中 您可以使用zOrder 在 Net中 它是 SetChildIndex 在你问之前 不 在这种情况下我没有使用布局管理器 如果您有两个叠在一起的组件 那么在它们已经显示之后如何更改顺序 由于空间不足 我有一个按钮稍微重叠在另一个组
  • 与 Windows 10 相比,Android 模拟器在 ubuntu 17.04 上运行速度极慢

    我尝试从此链接安装 kvm https help ubuntu com community KVM Installation 但即使在尝试此操作之后 模拟器在软件 GLES 2 0 模式下运行时仍然很慢 并且当我选择硬件 GLES 2 0
  • (默认)为每个可变参数类型构造一个对象

    考虑这个代码片段 void Foo std string str1 std string str2 template
  • IE10 setInterval 内存泄漏的解决方法

    在测试我们的 Javascript 库期间 我认为我们在 IE10 v10 0 9200 16519 Windows 8 64 位 Javascript 实现中发现了严重的内存泄漏setInterval 一个简单的测试用例表明 如果在函数的
  • SQL - 源代码控制和架构/脚本管理

    我的公司刚刚完成年度审核流程 我终于说服他们 是时候找到更好的解决方案来管理我们的 SQL 模式 脚本了 目前 我们只有几个脚本需要手动更新 我曾在另一家公司使用过 VS2008 数据库版本 这是一个很棒的产品 我的老板让我看一下 Redg
  • “git submodule foreach git pull origin master”和“git pull origin master --recurse-submodules”有什么区别

    我有一个 dotfiles 存储库 其中所有 vim 插件都存储为子模块 因此在发生更改时很容易更新 我以为这两个命令做了同样的事情 但我注意到事实并非如此 我知道我有几个子模块需要更新 所以我跑了git pull origin maste
  • 进行定点数学运算的最佳方法是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我需要为没有 FPU 的
  • 检测 iOS 上的飞行模式

    如何检测手机是否处于飞行模式 仅仅检测没有互联网连接是不够的 我必须能够区分这两种情况 尝试使用SCNetworkReachabilityGetFlags 系统配置框架 如果传回的flags变量为0且返回值为YES 则飞行模式开启 看看苹果
  • 简单的 shell 解决方案,用于为 stdout 的每一行执行命令[重复]

    这个问题在这里已经有答案了 这应该是一个非常简单的任务 我想获取任何旧命令的标准输出的每一行 并使用每个行来执行另一个命令并将其作为参数 例如 LS grep foo applycommand mv s bar 这将需要所有匹配的东西 fo
  • 将位图数组转换为 YUV (YCbCr NV21)

    如何转换返回的BitmapBitmapFactory decodeFile 转换为 YUV 格式 类似于相机 onPreviewFrame 以字节数组返回的形式 这是一些实际有效的代码 untested function byte getN
  • .net 应用程序图标存储在哪里?

    我试图找出我的应用程序的图标存储在 VS 2008 中的位置 在启动项目的应用程序属性中 我添加了一个带有 使用默认设置嵌入清单 设置的图标 我想以编程方式在应用程序中显示图标 但我无法弄清楚图标的存储位置 如何从代码中获取对应用程序图标的
  • 在 Angular 2 中指定服务提供者

    我正在尝试使用 Angular 2 的 DI 系统来自动处理我的服务的依赖项 我想在服务本身上使用注释 而不是使用第二个参数bootstrap 指定所有可注入服务 我有什么 低级服务 services role store ts expor
  • 角度路线包含#!在 url 中而不是 # [重复]

    这个问题在这里已经有答案了 最近我注意到 当使用ngRouteAngularJS 应用程序中的模块 该路由包含 在 URL 中 之前只是 例如 www webiste com login变成www website com login 我必须
  • 无法使用 JavaMail 在 Office365 上对 IMAP 进行身份验证

    我们正在尝试使用 OAUTH2 身份验证将 javamail 1 6 客户端连接到托管在 Office365 上的 Office365 邮箱 无论我们做什么 我们都会不断收到 A1 NO AUTHENTICATE failed 我们已经注册
  • 向文本块添加逐渐增加的模糊效果

    我有这样的文字 div p Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor incididunt ut labore et dolor
  • boost.pool如何实现分配内存的复用?

    背景 My 上一个问题 about boost pool导致我详细研究了boost pool 现在我有一个补充问题来最终确定我的理解 Prelude 这个参考有关对象池模式的说明如下 对象池模式是一种软件创建设计模式 使用一组随时可用的初始
  • 带有 IIS 的 ASP.NET Core - 不允许使用 HTTP 动词

    我们有一个ASP NET 核心 2 0网站还提供了一些简单的Web API用于 UI 增强目的的方法 The Web API在本地运行时 调用按预期工作IIS 快递 但是当我们部署到我们的IIS 8 5生产网络服务器 我们在创建 HTTP
  • 仅当另一个字段有值时才为必填字段,否则必须为空

    我的问题是关于 Laravel验证规则 我有两个输入a and b a是具有三个可能值的选择输入 x y and z 我想写这个规则 b must有一个价值only if a values is x 和b must否则为空 有没有办法写这样