【问题标题】:symfony date validation localizationsymfony 日期验证本地化
【发布时间】:2013-10-13 15:08:18
【问题描述】:

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

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

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

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

服务器给出错误。

你有什么建议吗?

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

【问题讨论】:

    标签: php validation symfony


    【解决方案1】:

    您可以从文档“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();
    });
    

    【讨论】:

    • 如果我不使用 symfony 表单日期格式。我使用 jquery datepicker。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多