我做了一个自定义验证规则,它迭代一个包含键日期的对象数组,并检查这些日期是否连续(日期之间的差异仅为1天)。为此,我需要填写“day”键并具有正确的日期格式。我将
date\u格式
validator规则放在day
键中,但由于我的自定义规则在数组字段中,如果我没有给他正确的date\u格式(例如随机字符串),它就会崩溃。也许你能更好地理解代码。
自定义验证器规则
Validator::extend('consecutive_dates', function($attribute, $value, $parameters, $validator) {
// Order the in the array with the 'day' value
usort($value, array($this, 'compare_dates'));
$previous_date = null;
foreach ($value as $date) {
// Check if dates are consecutives
$current_date = new DateTime($date['day']);
if ($previous_date !== null) {
$interval = $current_date->diff($previous_date);
if ($interval->days !== 1) {
// If not, fails
return false;
}
}
$previous_date = $current_date;
}
return true;
);
规则定义
'dates.*.day' => 'required_with:dates|date_format:Y-m-d',
'dates' => 'bail|array|filled|consecutive_dates',
现在,如果我尝试验证以下内容:
"dates": [{
"day": "fdsa",
}]
它会崩溃然后说
DateTime::__construct(): Failed to parse time string (fdsa) at position 0 (f): The timezone could not be found in the database
问题是:有没有一种方法可以让Laravel首先验证
”日期。*。日期“
必须具有日期\u格式:Y-m-d
以便在自定义验证时不会失败?
您应该首先检查给定值是否为有效日期,如下所示
if (Carbon::createFromFormat('date format', $date['day']) !== false) {
// valid date
}
我希望这会有所帮助。
验证规则的定义通常有两种方式,如果你使用了验证器的话,通常通过rule属性定义验证规则,而如果使用的是独立验证的话,则是通过rule方法进行定义。 属性定义 属性定义方式仅限于验证器,通常类似于下面的方式: <?php namespace app\index\validate; use think\Validate; class User extends Validate { prot
我正在尝试验证密码字段是否存在。我想允许某人编辑用户,他们可能想更改用户密码,也可能不想更改用户密码。所以我想我可以使用Laravels验证规则,特别是“有时”规则来实现这一点。我有一套规则: 例如,对于其他字段,通常会有其他规则,而对于密码,则会有更严格的规则。如果传递的数据中存在密码字段,我希望这只应用min:8规则,但是如果我将密码字段留空,则会出现一个验证错误,表明密码字段是必需的。 我不
如何在验证器中添加密码验证规则? 验证规则: 密码包含以下五个类别中至少三个类别的字符: 英文大写字符(A–Z) 英文小写字符(a–z) 以10位数字(0–9)为基数 非字母数字(例如:!、$、#或%) Unicode字符 如何在验证器规则中添加上述规则? 我的代码在这里
我正在用Xtext创建一个DSL,用于生成图像。然而,由于我对Xtext完全不了解,我遇到了一些问题,希望您能给我一些指导。 最终,我希望用户使用以下编码结构: 我在Xtext中想到了以下内容(我没有对MWE2做任何更改): 我需要解决几个问题,但我想知道解决这些问题的最佳方法是什么。 如何为终端规则SIZE中使用的INT设置边界。 如何设置bgColor:或bgsize:只能使用一次? 如何设置
本文向大家介绍laravel 数据验证规则详解,包括了laravel 数据验证规则详解的使用技巧和注意事项,需要的朋友参考一下 如下所示: 简单例子 特殊例子 以上这篇laravel 数据验证规则详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
BetterValidate 校验规则 类校验 对于参数的校验,Lin 提供了类校验这种便捷,好用的方式,它会 对ctx.request.body(上下文请求体)、ctx.request.query(上下文请求query参数)、ctx.request.header(上下文请求头)、ctx.param(路由参数)这些参数进行统一校验 ,所以请保证你的参数名没有重复。 代码演示: class Regi