2013-02-03 34 views
5

Zend Framework 2'nin yeni yayımlanan sürümü ile two new form elements were added; DateSelect ve MonthSelect. Ben üç seçme ekleyen eskiyi kullanmak istiyorum; gün, ay ve yıl. Ancak, çıktıyı nasıl istediğimi biçimlendirirken sorun yaşıyorum - ve bunun için bir belge yok!Zend Framework 2 DateSelect/MonthSelect biçimlendirme

I (this page alınan) böyle benim forma form öğesi ekliyorum: çıkışı için

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

, böyle yapıyorum:

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

şey olmasıdır ı don Seçimlerin biçimlendirilme şeklini nasıl kontrol edeceğini bilmiyorum. Örneğin, şu anda bu formda çıktılar: [month] [day], [year]. Ben iki şeyi değiştirmek istiyorum; İlk olarak, gün ve ayı değiştirmek istiyorum ve ikinci olarak, virgülden kurtulmak istiyorum.

Yardımcılar, seçimleri biçimlendirmek için IntlDateFormatter sınıfını kullanır.

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

sabitler tüm güvenilir olması, ben hala istediğiniz biçimi alamayan: Kaynak kodunda, böyle, __invoke() [link to source code] çağrılırken tarih türü için predefined constants kullanabilirsiniz fark ettim.

Üç seçen için de alıcılar olduğunu fark ettim, ancak her biri ile formSelect görünüm yardımcısını kullanarak, veri topluluğu yeni görünüm yardımcıları içinde olduğundan boş seçimler işleniyor. Bu yüzden, seçimleri tek tek kullanmanın amacını çok fazla yener; o zaman ben de düzenli seçimleri kullanabilirim.

Seçimlerimin nasıl biçimlendirildiği konusunda daha fazla nasıl denetim sahibi olabileceğime dair herhangi bir fikrim var mı? Çok fazla güçlük çekmeden mümkün mü, yoksa maksimum esneklik için üç tane düzenli seçim yapmalı mıyım?

cevap

2

ViewHelper biçimi $this->formDateSelect($element, $intlFormat, $locale) şeklindedir.

Bu durumda, geçerli yerel ayarınıza erişerek ve ViewHelpers __invoke()'a int ekleyerek istediğiniz çıktıyı oluşturmalısınız. Bu işe yaramazsa)

; ViewHelper ait getLocale() görünce yapılandırmasından varsayılan translator bu ViewHelper için açıkça bir locale ayarlamak zorunda, kullanılmaz, ama sonra sadece iyi hazırlaması gerektiğini de, anlaşılacağı Sizin için beklendiği gibi, Bakura'ya bir mesaj atmanızı tavsiye edebilirim his Blog about the new Form Features

+0

Sadece yapılandırmamdan yerel ayarı kullandığımı farzediyordum, böylece onu dışarıda bıraktım. Yerel ayarı değiştirmek, bana istediğimi her zaman vermez (örneğin, ülkem için bana sevmediğim bir format verir). Ancak, hedef dili için biçimlendirmenin tam olarak istediğim gibi olduğu için şanslıydım! Bunu yaptım: echo $ this-> formDateSelect ($ this-> form-> get ('birthDate'), IntlDateFormatter :: LONG, 'ro_RO'); '. Cevabınız için çok teşekkür ederim - çok takdir ediyor! – Andy0708

2

Herhangi bir kimsenin, bir tarih çıkarken DOM seç öğelerinin arasından rastgele bir virgül koymak isteyip istemediğine dair hiçbir fikrim yok ... ne yapabilirsiniz? onunla tam olarak?

seçenekler aracılığıyla iletebilirsiniz virgül ve diğer sınırlayıcı kaldırmak için: Ben varsayılan

tarafından yanlış olması gerektiğini düşünüyorum

"render_delimiters": false 

0

Sam sadece yerel ayarları güncelleyebilirsiniz bahseder gibi senin php.ini

Örneğin, bunu php'mde var.ini

intl.default_locale = en_GB

Bu benim UK projeleri için gerekli olan Gün/Ay/Yıl formatında DateSelect elemanı biçimlendirir.