【发布时间】:2013-10-13 15:08:18
【问题描述】:
我有一个简单的表单,我使用 jquery UI 日期选择器来输入生日。
在服务器端,我使用 symfony 验证和日期验证。
问题是验证只接受这种格式的输入:YYYY-MM-DD
但在英国等其他当地人中,格式为:DD/MM/YYYY
服务器给出错误。
你有什么建议吗?
我使用带有内部验证的 symfony 表单对象, 所以我不希望手动强制更改格式。
【问题讨论】:
标签: php validation symfony
我有一个简单的表单,我使用 jquery UI 日期选择器来输入生日。
在服务器端,我使用 symfony 验证和日期验证。
问题是验证只接受这种格式的输入:YYYY-MM-DD
但在英国等其他当地人中,格式为:DD/MM/YYYY
服务器给出错误。
你有什么建议吗?
我使用带有内部验证的 symfony 表单对象, 所以我不希望手动强制更改格式。
【问题讨论】:
标签: php validation symfony
您可以从文档“date”中了解到,约束日期仅执行格式“YYYY-MM-DD”的验证。
所以你有两个选择:
一种(最简单最合乎逻辑的)是在表单域“format”中手动设置格式:
$builder->add('date', 'date', array(
'widget' => 'single_text',
'format' => 'dd-MM-yyyy',
));
通过这种方式将表单本身反转日期并将正确的格式传递给验证器(和数据库)。
另一种是创建约束回调“callback”,并创建自己的验证逻辑。
还有另一种方式,即使插入到字符串的键中,也就是约束正则表达式“regex”。
通过这种方式,您将需要创建一个非常精确(和复杂)的正则表达式。
对于像第一个解决方案这样简单的问题是最合适的!
编辑:
jquery ui datepicker 锁定输入类型文本,不需要手动创建。
正如我在示例中所写,如果您使用'widget' => 'single_text' 将产生一个输入类型文本!
您可以为日期字段设置一个类,以便与 jquery 挂钩。
一个简短的例子:
表格:
$builder->add('date', 'date', array(
'widget' => 'single_text',
'format' => 'dd-MM-yyyy',
'attr' => array(
'class' => 'your_class'),
));
javascript:
$(function() {
$( ".your_class" ).datepicker();
});
【讨论】: