Définir la valeur par défaut sur le champ Datetime dans le formulaire symfony2
J'ai un formulaire contenant plusieurs champs. L'un d'eux est un champ Datetime. Comment définir une valeur par défaut pour ce champ?
J'ai essayé de mettre une valeur sur l'entité associée, dans le contrôleur, dans le constructeur et __ _ _ construct :
$myEntity = new MyEntity();
$myEntity->setMyDate(new \DateTime());
$form = $this->createForm(new AddMyEntity(), $myEntity);
Pas de travail.
A essayé de définir les $data
variable dans le buildForm :
$builder->add('myDate', 'date', array(
'format' => \IntlDateFormatter::SHORT,
'input' => 'datetime',
'widget' => 'single_text',
'data' => new \DateTime("now"));
Ne fonctionne pas non plus.
Toutes les idées, de la communauté Symfony2?
EDIT : Ajout de l'entité à la demande de faost.
/**
* @ORM\Column(name="myDate", type="datetime")
* @Assert\NotBlank()
*/
private $myDate;
- S'il vous plaît montrer définition de la propriété, "madate" dans la classe "MyEntity" et de "méthode buildForm" de classe de type de formulaire "AddMyEntity".
- La deuxième partie de ma question est un extrait de la méthode buildForm. Et je vais ajouter l'entité de la partie.
- Votre code est OK, cela devrait fonctionner. Mais je prends acte que vous utilisez datetime doctrine type de mappage pour "madate" le terrain afin de mieux utiliser datetime type de champ dans "AddMyEntity" de la classe symfony.com/doc/current/reference/forms/types/datetime.html
Vous devez vous connecter pour publier un commentaire.
De le fixer dans l'entité constructeur:
DateTime
objets dans les constructeurs et il fonctionne très bien. Probablement quelque chose qui est mal quelque part d'autre dans votre application.E. la réponse est correcte et est peut-être celui qui est recommandé. Mais pour être complet, une autre manière de définir la valeur par défaut pour une date widget dans un formulaire est à spécifier le
data
clé dans le tableau d'options en argument une instance de DateTime.Remarque: Cette opération écrase définie au préalable datetime sur chaque édition.
date
en second paramètre, j'ai dû mettreDateType::class
et ajouter la déclaration d'utilisation deSymfony\Component\Form\Extension\Core\Type\DateType
. Merci beaucoupCette solution ne nécessite pas de modification de votre entité objet.
Cette solution s'applique le comportement de ce formulaire, il ne se couple pas ce comportement de l'entité elle-même. Vous pourriez avoir plusieurs formes permettant de modifier une entité avec différents comportements requis. Certains nécessitent une date par défaut, d'autres n'ont pas.
Vous pouvez définir les attributs de mise à jour sur CURRENT_TIMESTAMP et defualt à l'heure actuelle timbre sera mise à jour à l'heure actuelle timbre automatiquement sans la mise à jour de la requête