Как отобразить месяцы в полном тексте для полей даты в Symfony2? - PullRequest
6 голосов
/ 25 ноября 2011

При использовании поля «Дата» в формах с Symfony2 они отображаются в трех разных полях выбора. Что-то вроде:

dd/mm/YYYY

Что бы мы хотели сделать, это отобразить месяцы в тексте January, February .... вместо 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 Ответ

8 голосов
/ 25 ноября 2011

Посмотрите на код класса 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
    );

UPDATE

$builder->add('dateOfBirth', 'birthday', array(
    'format' => 'dd - MMMM - yyyy',
    'widget' => 'choice',
    'years' => range(date('Y'), date('Y')-70)
));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...