【问题标题】:Laravel custom time validationLaravel 自定义时间验证
【发布时间】:2015-02-20 22:39:00
【问题描述】:

对于我的 laravel 4.2 项目,我允许用户为他们的公司设置开放时间。他们给出的格式是 01:01 hours:minutes 所以最大值是 23:59 。 验证时我无法检查数字或字母,我应该如何验证输入是否像格式?我想我应该制作一个自定义验证器,但我不太了解 laravel 的文档,堆栈帖子给出了不同的解决方案,但似乎也没有遵循文档。 link to the docs.

【问题讨论】:

  • 拆分:,然后分别检查分钟/小时。例如24:60怎么看都是无效的

标签: validation laravel laravel-4


【解决方案1】:

我不知道您对文档有什么困难。试试这个:(代码未经测试)

Validator::extend('time', function($attribute, $value, $parameters)
{
    $parts = explode(':', $value);
    if(count($parts) > 2){
        return false;
    }
    $hours = $parts[0];
    $minutes = $parts[1];
    if($hours >= 0 && $hours < 24 && $minutes >= 0 && $minutes < 60 && is_numeric($hours) && is_numeric($minutes)){
        return true;
    }
    return false;
});

【讨论】:

  • 我应该在哪里放置新的验证器?在我使用它的控件中?看起来不错(但您忘记检查是否存在 $parts[2] 值 01:01:03 现在是否有效?
  • 您可以随心所欲地执行此操作。如果您只有一个自定义验证器,您可以将其放入 app/filters.php。否则我会创建一个新文件app/validators.php 并要求在app/start/global.php 的底部。是的01:01:01 是有效的。我会更新答案。
  • ive 将其更改为: if(is_numeric($hours) && $hours >= 0 && $hours = 0 && $minutes
  • 我正要建议 ;)
猜你喜欢
  • 2012-11-27
  • 1970-01-01
  • 2015-05-10
  • 1970-01-01
  • 2015-08-02
  • 2014-05-31
  • 2017-04-11
  • 2018-05-31
  • 2018-02-18
相关资源
最近更新 更多