更改Zend Framework 2 DateSelect下拉菜单的顺序

时间:2017-03-09 11:23:30

标签: php zend-framework2

我在ZF2应用程序中有一个表单元素,它使用DateSelect允许用户输入他们的出生日期。目前,字段以d-m-y的顺序显示。我想颠倒这个顺序,所以它显示为y-m-d。我在SO上发布过帖子,建议在PHP中更改语言环境以更改顺序但这对我来说不是一个选项。我也试过

 $this->add(array(
        'type'    => 'Zend\Form\Element\DateSelect',
        'name'    => 'dob',
        'options' => array(
            'label' => 'Date of Birth',
            'create_empty_option' => true,
            'pattern' => $this->options['isMobile'] ? 'd MMM y' : 'd MMM y',
            'empty_options' => array(
                'day' => 'DD',
                'month' => 'MM',
                'year' => 'YYYY',
            ),
            'allowLabelHTML' => TRUE,
            'required' => true,
        )
    ));
    $this->get('dob')->setFormat('Y-m-d');

对于另一个SO问题,这是一个公认的答案,但这会给我带来内部服务器错误。如果这是不可能的,我会感到惊讶,可能使用帮助文件,但我无法在网上找到任何建议如何,除了上述和更改区域设置。有人能帮忙吗?

1 个答案:

答案 0 :(得分:1)

您会收到致命错误,因为setFormat()中不存在方法Zend\Form\Element\DateSelect。 我不认为可以在不编写自己的视图助手的情况下实现这一目标。

Zend\Form\Element\DateSelect基于区域设置,因此您可以将区域设置短代码作为参数传递给查看帮助程序,因此元素的顺序适用于提供的区域。

此视图助手需要3个参数$this->formDateSelect($element, $intlFormat, $locale),因此您可以像这样使用它:

echo $this->formDateSelect($form->get('dob'), \IntlDateFormatter::LONG, 'en_Gb');

...或
echo $this->formDateSelect()->setLocale('en_Gb')->render($form->get('dob'));

或...您可以更改php.ini文件中的区域设置

  

intl.default_locale = en_Gb