У меня есть форма, содержащая несколько полей. Одним из них является поле Datetime. Как определить значение по умолчанию для этого поля?
Я попытался установить значение для связанного объекта, в контроллере, в конструкторе и __construct:
$myEntity = new MyEntity(); $myEntity->setMyDate(new \DateTime()); $form = $this->createForm(new AddMyEntity(), $myEntity); Не работает.
  Пытался определить переменную $data в buildForm: 
 $builder->add('myDate', 'date', array( 'format' => \IntlDateFormatter::SHORT, 'input' => 'datetime', 'widget' => 'single_text', 'data' => new \DateTime("now")); 
Не работает. Любые идеи, сообщество Symfony2?
EDIT: добавление объекта по требованию.
 /** * @ORM\Column(name="myDate", type="datetime") * @Assert\NotBlank() */ private $myDate; 
        Задайте его в конструкторе сущности:
 class Entity { /** * @var \DateTime */ private $date; public function __construct() { $this->date = new \DateTime(); } } 
  Ответ Элнура правильный и, пожалуй, рекомендуется.  Но для полноты альтернативного способа установить значение по умолчанию для виджета даты в форме – указать ключ data в аргументе массива параметров с экземпляром DateTime. 
 $builder->add('myDate', 'date', array( 'data' => new \DateTime() )); 
Примечание. Это приведет к перезаписыванию ранее заданного времени и времени для каждого редактирования.
Это решение не требует модификации объекта объекта.
  $builder->add('myDate', DateTimeType::class, [ 'label' => 'My Date', 'required' => false, 'date_widget' => 'single_text', 'time_widget' => 'single_text', 'date_format' => 'dd/MM/yyyy' ]); $builder->get('myDate')->addModelTransformer(new CallbackTransformer( function ($value) { if(!$value) { return new \DateTime('now +1 month'); } return $value; }, function ($value) { return $value; } )); 
Это решение применяет поведение только к этой форме, оно не связывает это поведение с самим объектом. У вас может быть несколько форм, которые изменяют объект с различным требуемым поведением. Некоторым требуется дата по умолчанию, другие – нет.
Вы можете установить атрибуты на обновление CURRENT_TIMESTAMP, а defualt на текущую метку времени автоматически обновит текущую метку времени без обновления с помощью запроса
 `feildname` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP