2013-02-03 56 views
5

随着最新发布的Zend Framework 2的版本,two new form elements were added; DateSelectMonthSelect。我想用前者,增加三个选择;日,月和年。但是,我有一个格式化输出的问题,我想如何 - 而且,没有任何文档!Zend Framework 2 DateSelect/MonthSelect格式

我加入表单元素,以我的形式是这样的(从this page拍摄):

$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%', 
     ) 
    ) 
)); 

对于输出,我做的是这样的:

echo $this->formDateSelect($form->get('birthDate')); 

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

帮助者使用IntlDateFormatter类来格式化选择。在源代码中,我注意到,你可以打电话时__invoke() [link to source code],像这样使用predefined constants date类型:

echo $this->formDateSelect($form->get('birthDate'), IntlDateFormatter::SHORT); 

已经尝试了所有的常量,我仍然不能得到我想要的格式。

我注意到有三个选择的getters,但是使用formSelect视图助手与他们每个人,空选择被渲染,因为数据填充在新的视图助手内。因此,即使单独使用选择,也几乎失败了。那么我不妨使用常规选择。

有没有人有任何想法如何获得更多的控制我的选择如何格式化?是否可以没有太多的麻烦,或者我应该只使用三个常规选项来获得最大的灵活性?

回答

2

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

就这么说,你应该可以通过访问当前的区域设置来创建你想要的输出,并将int插入到ViewHelpers __invoke()中。眼看视图助手的getLocale()意味着,从配置默认translator没有使用,所以你必须设置一个locale明确这个视图助手,但随后应该制定得很好;)

如果不工作正如你所预料的那样,我可能会建议你点击his Blog about the new Form Features

+0

我只是假设它是使用我的配置中的区域设置,所以我将它遗漏了。改变语言环境,它并不总是给我我想要的东西(例如,对于我的国家,它给了我一种我不喜欢的格式)。不过,我很幸运,对于我的目标语言,格式正是我想要的!我这样做:'echo $ this-> formDateSelect($ this-> form-> get('birthDate'),IntlDateFormatter :: LONG,'ro_RO');'。非常感谢您的回答 - 非常感谢! – Andy0708

2

我不知道为什么有人想在输出日期时选择DOM元素为什么有人想要在它之间插入一个逗号......你能做什么准确吗?

要删除逗号和任何其他分隔符,你可以通过选择传中:

"render_delimiters": false 

我想这应该是默认的

0

正如萨姆提到你可以在更新区域设置你的php.ini

例如我有这在我的PHP。INI

intl.default_locale = EN_GB

这将对在我的英国项目所需的日/月/年格式DateSelect元素。