Zend Framework 2 DateSelect/MonthSelect格式

And*_*708 6 php zend-form zend-form-element zend-framework2

随着最新发布的Zend Framework 2版本,增加了两个新的表单元素 ; DateSelectMonthSelect.我想使用前者,它增加了三个选择; 日,月和年.但是,我有一个问题格式化输出我想要的 - 而且,没有这方面的文档!

我正在将表单元素添加到我的表单中(从此页面中获取):

$this->add(array(
    'type'    => 'Zend\Form\Element\DateSelect',
    'name'    => 'birthDate',
    'options' => array(
        'label'               => 'Date',
        'create_empty_option' => true,
        'day_attributes'      => array(
            'data-placeholder' => 'Day',
            'style'            => 'width: 20%',
        ),
        'month_attributes'    => array(
            'data-placeholder' => 'Month',
            'style'            => 'width: 20%',
        ),
        'year_attributes'     => array(
            'data-placeholder' => 'Year',
            'style'            => 'width: 20%',
        )
    )
));
Run Code Online (Sandbox Code Playgroud)

对于输出,我这样做:

echo $this->formDateSelect($form->get('birthDate'));
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何控制选择的格式化方式.例如,它们目前以这种形式输出:[month] [day], [year].我想改变两件事; 首先,我想切换日期和月份,其次,我想摆脱逗号.

助手使用IntlDateFormatter该类来格式化选择.在源代码中,我注意到在调用[链接到源代码]时可以使用预定义的常量作为日期类型,如下所示:__invoke()

echo $this->formDateSelect($form->get('birthDate'), IntlDateFormatter::SHORT);
Run Code Online (Sandbox Code Playgroud)

尝试了所有常量后,我仍然无法获得我想要的格式.

我注意到有三个选择的getter,但是使用formSelect每个选择的视图助手,呈现空选择,因为数据填充在新视图助手中.因此,即使单独使用选择也几乎失败了; 然后我不妨使用常规选择.

有没有人知道我如何能够更好地控制我的选择格式?它是否可能没有太多麻烦,或者我应该只使用三个常规选择以获得最大的灵活性?

Sam*_*Sam 2

的格式ViewHelper$this->formDateSelect($element, $intlFormat, $locale).

话虽如此,您应该能够通过访问当前的区域设置并将 int 插入 ViewHelpers 来创建您想要的输出__invoke()。看到getLocale()ViewHelper 的 意味着,translator不使用配置中的默认值,因此您必须locale为此 ViewHelper 显式设置一个,但它应该可以正常工作;)

如果这对您来说没有达到预期效果,我建议您在 Bakura的博客上留言,了解新的表单功能