【发布时间】: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