1

我有一个简单的表单,我使用 jquery UI 日期选择器进行生日输入。

在服务器端,我使用 symfony 验证和日期验证。

问题是验证只接受这种格式的输入:YYYY-MM-DD

但在英国等其他当地人中,格式为:DD/MM/YYYY

服务器给出错误。

你有什么建议吗?

我使用带有内部验证的 symfony 表单对象,所以我不希望手动强制更改格式。

4

1 回答 1

1

从文档“ date ”中可以看出,约束日期仅执行验证格式“YYYY-MM-DD”。

所以你有两个选择:

一种(最简单最合乎逻辑的)是在表单域“格式”中手动设置格式:

$builder->add('date', 'date', array(
    'widget' => 'single_text',
    'format' => 'dd-MM-yyyy',
));

这样,表单本身就会反转日期并将正确的格式传递给验证器(和数据库)。

另一种是创建一个约束回调“回调”,并创建自己的验证逻辑。

还有另一种方式,即使它插入到字符串的键中,它也是约束正则表达式“ 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();
});
于 2013-10-13T19:12:53.727 回答