2013-02-03 92 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元素。