如何在Symfony2中的日期字段中以全文显示月份?

时间:2011-11-25 13:00:57

标签: php forms symfony

在表格中使用日期字段与Symfony2时,它们显示在三个不同的选择框中。 类似的东西:

dd/mm/YYYY

我们想要做的是在文字JanuaryFebruary ....而不是1,2,3 ......中显示月份。

如何强制显示月份下拉列表的全文?

编辑:这是我在表单类中使用的代码:

$builder->add('dateOfBirth', 'birthday', array(
    'format' => 'dd - MM - yyyy',
    'widget' => 'choice',
    'years' => range(date('Y'), date('Y')-70)
));

EDIT2:显示F

的图像

enter image description here

1 个答案:

答案 0 :(得分:8)

查看DateType类的代码,它有一个格式选项:

$allowedFormatOptionValues = array(
            \IntlDateFormatter::FULL,
            \IntlDateFormatter::LONG,
            \IntlDateFormatter::MEDIUM,
            \IntlDateFormatter::SHORT,
        );

        // If $format is not in the allowed options, it's considered as the pattern of the formatter if it is a string
        if (!in_array($format, $allowedFormatOptionValues, true)) {
            if (is_string($format)) {
                $defaultOptions = $this->getDefaultOptions($options);

                $format = $defaultOptions['format'];
                $pattern = $options['format'];
            } else {
                throw new CreationException('The "format" option must be one of the IntlDateFormatter constants (FULL, LONG, MEDIUM, SHORT) or a string representing a custom pattern');
            }
        }

$formatter = new \IntlDateFormatter(
        \Locale::getDefault(),
        $format,
        \IntlDateFormatter::NONE,
        \DateTimeZone::UTC,
        \IntlDateFormatter::GREGORIAN,
        $pattern
    );

<强>更新

$builder->add('dateOfBirth', 'birthday', array(
    'format' => 'dd - MMMM - yyyy',
    'widget' => 'choice',
    'years' => range(date('Y'), date('Y')-70)
));