MaG*_*tas 5 validation laravel laravel-5
我正在编写验证器规则,用于在添加新的 Eloquent 模型记录之前检查数据是否有效。
字符串、小数和整数都非常清楚。
但是时间戳字段呢?
我timestamp在我的数据库迁移之一中添加了 using方法的列,它工作得很好。我唯一需要的是在执行查询之前确保传递的值是有效的时间戳。
有直接/简单的方法还是应该为此编写正则表达式?
谢谢
我认为像这样验证..
$rules = ['start_at' => 'date_format:Y-m-d H:i:s'];
Run Code Online (Sandbox Code Playgroud)
让我们测试一下这个规则
public function testSimpleTimeStampValidation()
{
$data = ['start_at' => '2015-12-1 12:12:58'];
$rules = ['start_at' => 'date_format:Y-m-d H:i:s'];
$validator = \Validator::make($data, $rules);
$this->assertTrue($validator->passes()); // passed !
}
Run Code Online (Sandbox Code Playgroud)
再次尝试使用不需要的日期格式进行测试..
public function testSimpleTimeStampValidation()
{
$data = ['start_at' => '12-1-2015 12:12:58'];
$rules = ['start_at' => 'date_format:Y-m-d H:i:s'];
$validator = \Validator::make($data, $rules);
$this->assertTrue($validator->passes()); // Failed !
}
Run Code Online (Sandbox Code Playgroud)
看起来这个规则很有效..
更多细节L5 中的数据格式验证
使用这个规则
public function rules()
{
return [
'date_time' => 'date_format:Y-m-d H:i:s'
];
}
Run Code Online (Sandbox Code Playgroud)
Pᴇʜ*_*Pᴇʜ -1
Laravel 中没有时间戳验证规则。如果您需要验证时间戳,您可以使用类似的东西:
function isValidTimeStamp($timestamp)
{
return ((string) (int) $timestamp === $timestamp)
&& ($timestamp <= PHP_INT_MAX)
&& ($timestamp >= ~PHP_INT_MAX);
}
Run Code Online (Sandbox Code Playgroud)
如果您在 php 中生成时间戳,则无需验证它。如果它是用户输入,您可以在将其转换为时间戳之前使用laravel 验证器date的验证规则。
| 归档时间: |
|
| 查看次数: |
14700 次 |
| 最近记录: |