使用带有附加参数的自定义规则验证 Laravel 中的数组

2023-11-23

我正在使用 Laravel 5.7,我需要使用 2 个输入(前缀+数字)来验证电话长度。总位数必须始终为 10。

我正在将这个自定义规则用于其他运行良好的项目:

<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;

class PhoneLength implements Rule
{
    public $prefix;

/**
 * Create a new rule instance.
 *
 * @return void
 */
public function __construct($prefix = null)
{
    //
    $this->prefix = $prefix;
}

/**
 * Determine if the validation rule passes.
 *
 * @param  string  $attribute
 * @param  mixed  $value
 * @return bool
 */
public function passes($attribute, $value)
{
    //
    return strlen($this->prefix)+strlen($value) == 10 ? true : false;
}

/**
 * Get the validation error message.
 *
 * @return string
 */
public function message()
{
    return 'El Teléfono debe contener 10 dígitos (prefijo + número)';
}
}

在我的控制器中我做了类似的事情

$validatedData = $request->validate([
  'prefix' => 'integer|required',
  'number' => ['integer','required', new PhoneLength($request->prefix)],
]);

现在我需要使用数组,所以我的新验证看起来像

$validatedData = $request->validate([
  'phones.*.prefix' => 'required',
  'phones.*.number' => ['required', new PhoneLength('phones.*.prefix')],
]);

上面的代码根本不起作用,参数没有按预期发送。 如何发送数组值?当然,我需要从同一个数组元素获取值,所以如果phones[0].number正在验证中,前缀phones[0].prefix是需要的。

我发现了这个问题,但我拒绝相信这是不可能以“本机”方式做到的:使用自定义规则的 Laravel 数组验证

提前致谢


你可以获得$prefix从请求本身:

class PhoneLength implements Rule
{
    public function passes($attribute, $value)
    {
        $index = explode('.', $attribute)[1];
        $prefix = request()->input("phones.{$index}.prefix");
    }
}

或通过$request in the PhoneLength规则构造函数,然后使用它。

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

使用带有附加参数的自定义规则验证 Laravel 中的数组 的相关文章

随机推荐

  • Java - 运行一个线程两次[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 来自另一个帖子 如果一个线程需要运行多次 那么应该创建一个 Thread 的新实例并对其调用 start 这是怎么做到的 我会使用另一层抽象 使用ExecutorService 这是
  • C++ 中 C 库的范围 -

    C 编程语言 特别版 第 431 页指出 For every header lt X h gt defining part of the C standard library in the global namespace and also
  • 计算字符串出现次数并绘制直方图

    是否有任何直接的方法可以从像下面这样的元胞数组创建直方图 连续条之间的间距应该完全相同 x 轴的标签应该是垂直方向下面的变量的相应名称 w464 w462 w461 w464 w461 w463 w466 w461 我也想知道更好的方法 F
  • 主题和行为主题有什么区别?

    我不清楚 a 之间的区别Subject and a BehaviorSubject 难道只是一个BehaviorSubject有getValue 功能 行为主体持有一个值 当它被订阅时 它会立即发出该值 主题不具有值 主题示例 使用 RxJ
  • 在 Windows 上使用 mkbundle 创建 C# 可执行文件

    我正在尝试从控制台应用程序创建可执行文件 我已经安装了 mono cygwin mingw gcc mingw zlib1 mingw zlib devel pkg config 并将以下几行添加到我的 bashrc 文件中 export
  • 使用CSS和Javascript的无限旋转动画[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我浏览了一些单页网站示例并发现了这一点 http alwayscreative net 我对背景中无限旋转的圆盘感到非常惊讶 我看过一些例子 但没有一个是这样工作的 谁能告诉我这
  • 如何停止核心动画?

    我现在正在使用核心动画为按钮设置动画 在某种情况下我想停止该动画 如何停止动画 这是为按钮设置动画的方法 void animateButton UIButton btnName CABasicAnimation pulseAnimation
  • 为什么 C++ 允许未命名函数参数?

    以下是完全合法的C code void foo int cout lt lt Yo lt lt endl int main int argc char const argv foo 5 return 0 我想知道 考虑到无法从函数内部引用它
  • “可序列化”类中的字段应该是瞬态的或可序列化的

    您好 我在声纳 lint 中收到此错误 可序列化 类中的字段应该是瞬态的或 可序列化为 私有最终条件 notEmpty lock newCondition 私有最终条件 notFull lock newCondition 私有Compara
  • 上渲染 MathJax 输出

    我搜索过这个主题 但无法找到直接答案 而且我也不擅长 javascript 所以我希望有人能告诉我如何做到这一点 我只是喜欢在canvas2D 中显示数学 我用context fillText将字符串传递给canvas2d 但该字符串显然没
  • 以编程方式在 Windows 中创建快捷方式

    有没有办法在 Windows 中创建链接 我找到了使用的示例VBScript或者必须下载Shortcut exe 我需要一个简单的解决方案 那可能吗 我遇到了同样的问题 所以我编写了用于解析和创建 lnk 文件的库 它不使用 VBScrip
  • Python - 使用 matplotlib 组织 3 个子图

    我尝试为我的图生成 3 个子图 这似乎可行 但并不完全一致 如何使底部的图形和下面的图形之间的宽度相同 plt close fig plt figure ax1 plt subplot 211 ax1 plot cycles np asar
  • npm install 错误:rollbackFailedOptional

    当我尝试时npm install新软件包它向我显示此错误 rollbackFailed可选 动词 npm session 585aaecfe5f9a82 node version 8 4 0 npm version 5 3 0 first
  • 启用 cookie 后,为什么 jsessionid 出现在 Wicket URL 中?

    我注意到 当用户第一次访问我的网站时 Wicket 生成的 URL 包含jsessionid 而不是依赖 cookie 来获取会话信息 cookie 确实设置成功 如果用户只是重新加载页面 jsessionid不再附加到 URL 中 你可以
  • Chrome扩展:如何在注入后删除内容脚本?

    使用 Google Chrome 扩展 是否可以在将内容脚本注入页面后将其删除 没有用于重新加载内容脚本的 API 方法 据我所知 因此我想重新注入脚本并删除旧脚本 如果可能 不 你不能 删除 它 运行内容脚本可能会产生副作用 例如在窗口对
  • Nodejs-Req.body 在 Express 4.x 的帖子中未定义

    我正在使用中间件body parser对表单值进行编码以获取 req body 对象 但当我调试代码时 发现 req body 未定义 这是我的代码 var express require express var app express v
  • Linux 和 Windows 之间的移植如何进行?

    如果一款特定的软件要在一个平台上运行 而程序员 公司 任何人想要将其移植到另一个平台上 那么到底要做什么 我的意思是 他们只是将 Linux 或 Windows 特定的引用重写为另一个中的等效引用吗 或者是否需要整个重写 只是想了解是什么导
  • VSO NuGet Publisher 构建步骤失败

    我正在使用 Visual Studio Online 包管理器预览版以及新的构建系统 包管理器预览添加了许多构建步骤 包括 NuGet Publisher 步骤 该步骤应将包推送到 Visual Studio Online 托管的私有源 N
  • 无法在 swift iOS 8 扩展中投射 UIImage

    我有一个奇怪的问题 我正在尝试构建一个操作扩展 该扩展将从提供的图像中扫描条形码 这是代码 override func viewDidLoad super viewDidLoad Get the item s we re handling
  • 使用带有附加参数的自定义规则验证 Laravel 中的数组

    我正在使用 Laravel 5 7 我需要使用 2 个输入 前缀 数字 来验证电话长度 总位数必须始终为 10 我正在将这个自定义规则用于其他运行良好的项目