2017-09-20 101 views
5

Küçük bir sorunum Sonata kullanarak küçük bir proje üzerinde çalışıyorum ama bir kişinin bir tarih seçebileceği tarih aralığının nasıl özelleştirileceğini anlamaya çalışıyorum, örneğin 1 Ocak 2000'den 31 Aralık 2020'ye kadar Birisi bana Sonata belgelerinde nerede bulabileceğimi veya nasıl yapılacağını gösterebiliyor mu? Çünkü küçük bir bakışım var ve tarih seçimini tamamen özelleştirmek için hiçbir şeyim yok. peşinSonata Tarih aralığı

Düzenleme içinde

Teşekkür: symfony belgelerinde

Ben İşte bu

'days' => range(1,31) 

bulundu: http://symfony.com/doc/current/reference/forms/types/date.html

Ama sonat doc şey bulunamadı olamaz. Ve Symfony üzerinde çalışmama:/

cevap

3

Sonata'da sonata_type_date_picker alanını kullandığınızı varsayalım. Belgeler here. Sonra durum böyle uygulanabilir:

->add('userDate', 'sonata_type_date_picker', [ 
    'dp_min_date' => 'Jan 1, 2000', //todo: date format here depends on your setup. Basicly it's the same format, you see in text field after you selected data in datepicker. 
    'dp_max_date' => 'Dec 31, 2020', 
]); 

Alternatif 3 açılır menülerini tarihi seçicisini olabilir - bu standart Symfony'nin tarih alanım, SonataAdmin ile çalışıyor:

->add('userDate', 'date', [ 
    'years' => range(2000, 2020), 
]); 

Ben de tavsiye ederim aynı kurallarla arka uç doğrulaması eklemek için (Varlık):

/** 
* @var \DateTime() 
* 
* @Assert\Range(
*  min = "2000-01-01", 
*  max = "2020-12-31" 
*) 
*/ 
protected $userDate; 
+0

Teşekkürler, ama kullandım ama onları seçemiyorum. Şimdi kullanmadan önce bir metin alanı gibi -> add ('userDate', 'date', ....) ve onu seçebildim. Kullanıcılar için daha kolaydı. Bunu 'sonata_type_date_picker' ile nasıl yapabilirim biliyor musunuz? – Jeremy

+1

Yani, 3 damla veya tarih seçicisini mi istiyorsunuz? Tarih seçicide metin girişi görürsünüz. Bazı JavaScript'i sayfaya eklemelisiniz (yapılandırma yoluyla yapılabilir) ve ardından metin girişine ek olarak tarihçiyi göreceksiniz. –

+0

Eğer 3 damla aşağı olması mümkün ise mükemmel olacak – Jeremy