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