2017-09-20 9 views
5

J'ai un petit problème Je travaille sur un petit projet en utilisant Sonata mais j'essaie de comprendre comment personnaliser la plage de dates où une personne peut choisir une date, par exemple du 1er janvier 2000 au 31 décembre 2020 Quelqu'un pourrait-il me dire où je peux le trouver dans la documentation de la Sonate ou me montrer comment le faire? Parce que j'ai un peu regardé et je n'ai rien à complètement personnaliser le choix des dates.Sonata Plage de dates

Merci à l'avance

Edit:

Dans la documentation de symfony Je trouve ce

'days' => range(1,31) 

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

Mais je ne peux rien trouvé dans la sonate doc. Et ne fonctionne pas comme sur Symfony:/

Répondre

3

Je suppose que vous utilisez le champ sonata_type_date_picker dans Sonata. La documentation est here. Ensuite, votre cas peut être mis en œuvre comme ceci:

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

Sinon, vous pouvez avoir sélecteur de date avec 3 dropdowns - c'est la norme Symfony champ Date, fonctionne très bien avec SonataAdmin:

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

Je vous recommande aussi pour ajouter la validation dorsale avec les mêmes règles (dans l'entité):

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

Merci, mais je l'ai utilisé mais je ne peux pas les choisir. Maintenant, c'est comme une zone de texte avant que j'utilise -> add ('userDate', 'date', ....) et j'ai été en mesure de le choisir. C'était plus facile pour les utilisateurs. Savez-vous comment je peux le faire avec 'sonata_type_date_picker' – Jeremy

+1

Alors, voulez-vous 3 déroulants ou un sélecteur de date? Dans le cas du sélecteur de date, vous verrez la saisie de texte. Vous devez ajouter un peu de JavaScript à la page (peut être fait via la configuration) et vous verrez alors le "datepicker" en plus de la saisie de texte. –

+0

S'il est possible d'avoir un 3 déroulant, ce sera parfait – Jeremy