Symfonyob娱乐下载 2.6新增功能:对Validator约束的日期支持
2014年9月26日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony版本。ob娱乐下载有些信息可能已经过时了。阅读最新的Symfony文档ob娱乐下载.
比较日期是Symfony最常要求的功能之一ob娱乐下载验证器组件.这就是为什么ob娱乐下载Symfony 2.6将包括对比较和范围约束的日期支持.
首先,GreaterThan,GreaterThanOrEqual,不超过而且LessThanOrEqual约束允许您将值与给定的日期进行比较。让我们想象一下,您的应用程序创建了必须在15分钟或更短时间内确认的预订。使用LessThanOrEqual
约束,您可以使用以下代码:
1 2 3 4 5 6 7 8 9
使用ob娱乐下载\组件\验证器\约束作为断言;类预订{/ * * *@Assert\LessThanOrEqual("+15分钟")*/受保护的$confirmedAt;}
另一个例子是限制未成年人访问您的网站,可以通过以下方式实现:
1 2 3 4 5 6 7 8 9
使用ob娱乐下载\组件\验证器\约束作为断言;类人{/ * * *@Assert\小于("-18年")*/受保护的$dateOfBirth;}
这些约束支持所有的语义格式接受DateTime
构造函数,所以你可以定义非常高级的验证。考虑这样一个应用程序,它允许用户提交事件,但只限于当年开始的事件。使用范围
断言您可以如下方式应用此验证:
12 3 4 5 6 7 8 9 10 11 12
使用ob娱乐下载\组件\验证器\约束作为断言;类事件{/ * * *@Assert\范围(* min = " 1月1日",* max = "明年1月1日" *)*/受保护的$startDate可以;}
请注意,PHP将使用服务器配置的时区来解释这些日期。如果你想显式地设置时区,将它附加到日期字符串:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
使用ob娱乐下载\组件\验证器\约束作为断言;/ * * *@Assert\LessThanOrEqual(“+15分钟亚洲/东京”)*/受保护的$confirmedAt;/ * * *@Assert\小于("-18年UTC") */受保护的$dateOfBirth;/ * * *@Assert\范围(* min = " 1月1日美国/Buenos_Aires", * max = "明年1月1日美国/Buenos_Aires" *) */受保护的$startDate可以;
前面的所有示例都使用注释来设置验证,但也可以使用YAML和XML验证文件。查看Validator文档以获得关于这些验证器的欧宝官网下载app更多示例(在撰写本文时,文档尚未合并;请在这个拉请求).
最后,如果您想使用这些日期验证器,但又不能将应用程序升级到Symfony 2.6,请查看ob娱乐下载PUGXExtraValidatorBundle,它添加了三个类似的验证器DateRange
,MinDate
而且MaxDate
.
发表在#生活在边缘
评论
这个错误似乎来自文档PR,我已经在那里添加了一个评论。
@Victor,接得好!示例代码现在已经更新。
Victor Berchet is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now邮件中有错误吗?“@Assert\LessThan(“-18岁”)”上的年龄听起来很奇怪,应该是在dob上