Set default value on Datetime field in symfony2 form
I have a form containing several fields. One of them is a Datetime field. How to define a default value for that field?
I've tried setting a value on the related entity, in controller, in constructor and __construct :
$myEntity = new MyEntity();
$myEntity->setMyDate(new \DateTime());
$form = $this->createForm(new AddMyEntity(), $myEntity);
Not working.
Tried to define the $data
variable in the buildForm :
$builder->add('myDate', 'date', array(
'format' => \IntlDateFormatter::SHORT,
'input' => 'datetime',
'widget' => 'single_text',
'data' => new \DateTime("now"));
Not working either. Any ideas, Symfony2 community?
EDIT : Adding entity on demand of faost.
/**
* @ORM\Column(name="myDate", type="datetime")
* @Assert\NotBlank()
*/
private $myDate;
Solution 1:
Set it in the entity constructor:
class Entity
{
/**
* @var \DateTime
*/
private $date;
public function __construct()
{
$this->date = new \DateTime();
}
}
Solution 2:
Elnur's answer is correct and is perhaps the recommended one. But for completeness, an alternative way to set the default value for a date widget in a form is to specify the data
key in the options array argument with an instance of DateTime.
$builder->add('myDate', 'date', array(
'data' => new \DateTime()
));
Note: This will overwrite the previously set datetime on every edit.