gpt4 book ai didi

php - Laravel 5.1 date_format 验证允许两种格式

转载 作者:IT王子 更新时间:2023-10-29 00:07:43 31 4
gpt4 key购买 nike

我对传入的 POST 请求使用以下日期验证。

'trep_txn_date' => 'date_format:"Y-m-d H:i:s.u"'

这将只允许此类日期,即 2012-01-21 15:59:44.8

我也想允许没有时间的日期,例如2012-01-21,发送到 mysql db 时会自动存储为 2012-01-21 00:00:00.0

有没有一种方法可以使用 Laravel 现有的验证规则来做到这一点。有没有办法在 date_format 规则中定义多种格式,如下所示。

'trep_txn_date' => 'date_format:"Y-m-d H:i:s.u","Y-m-d"' //btw this didn't work.

谢谢,

K

最佳答案

date_format 验证器只采用一种日期格式作为参数。为了能够使用多种格式,您需要构建自定义验证规则。幸运的是,这非常简单。

您可以使用以下代码在您的 AppServiceProvider 中定义多格式日期验证:

class AppServiceProvider extends ServiceProvider  
{
public function boot()
{
Validator::extend('date_multi_format', function($attribute, $value, $formats) {
// iterate through all formats
foreach($formats as $format) {

// parse date with current format
$parsed = date_parse_from_format($format, $value);

// if value matches given format return true=validation succeeded
if ($parsed['error_count'] === 0 && $parsed['warning_count'] === 0) {
return true;
}
}

// value did not match any of the provided formats, so return false=validation failed
return false;
});
}
}

您以后可以像这样使用这个新的验证规则:

'trep_txn_date' => 'date_multi_format:"Y-m-d H:i:s.u","Y-m-d"' 

您可以在此处阅读有关如何创建自定义验证规则的更多信息:http://laravel.com/docs/5.1/validation#custom-validation-rules

关于php - Laravel 5.1 date_format 验证允许两种格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32006092/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com