【问题标题】:symfony 2 standalone forms datetime validation on 'timestamp' input type'timestamp' 输入类型的 symfony 2 独立表单日期时间验证
【发布时间】:2014-01-04 02:05:48
【问题描述】:

我在一个项目中使用 Symfony Form 和 Validator 独立组件。我看不到 date_format 选项将如何用于验证输入值。

我将字段呈现为:

->add('from_date', 'datetime', array(
      'constraints' => array(
        new Assert\DateTime(),
        new Assert\GreaterThan(array(
          'value'   => time(),
          'message' => 'From: date/time must be in the future'
        ))
      ),
      'required'    => true,
      'label'       => 'From date:',
      'date_widget' => 'single_text',
      'time_widget' => 'choice',
      'input'       => 'timestamp',
      'date_format' => 'dd/MM/yyyy',
      'attr'        => array(
        'class'     => 'textbox', 
        'size'      => 15
      ),
      'mapped'      => false
    ))

正确显示一个输入框,该输入框正确验证日期格式(例如 2013 年 12 月 12 日)和两个小时和分钟的下拉菜单。

但是,在提交时,日期时间验证器总是失败 - 似乎是因为

const PATTERN = '/^(\d{4})-(\d{2})-(\d{2}) ... etc

永远不会更改以处理正确创建的时间戳。所以,这个验证检查总是失败:

if (!preg_match(static::PATTERN, $value, $matches) || 
!checkdate($matches[2], $matches[3], $matches[1])) {

因为 $value 现在是一个时间戳,而不是输入的格式。

我不确定这只是独立使用表单时的问题还是缺少功能,但我看不到该配置能够正确验证的方式。

【问题讨论】:

    标签: php forms validation symfony


    【解决方案1】:

    您是否尝试将值设置为 \DateTime 对象?

    "value" => new \DateTime("NOW"),
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 2015-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多