Intereting Posts
ищет c # эквивалент проверки пароля php () Существуют ли ограничения размера для ключей массива PHP? Каковы ограничения в общем случае для массивов PHP? получить родительский url iframe в PHP Альтернативная функция для EREGI в PHP Метод (например, через скрипт bash), чтобы превратить индексы php-массива в настоящее время с использованием констант в индексы массивов с использованием одинарных кавычек? Как удалить 3 символа в конце строки в php? Печать страницы на локальном компьютере с использованием php (javascript) без диалогового окна печати Windows Получить место просмотра, переданное в композитор вида laravel .htaccess переписать URL для поддомена AS3 Растровое хранилище Значение из типа ввода = «кнопка» не добавляется в базу данных ReferenceError: функция ajax не определена Добавить параметры входа Joomla TCPDF UTF-8. Литовские символы не появляются Календарь, поддерживающий праздники

Установить значение по умолчанию в поле Datetime в форме symfony2

У меня есть форма, содержащая несколько полей. Одним из них является поле 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; 

Solutions Collecting From Web of "Установить значение по умолчанию в поле Datetime в форме symfony2"

Задайте его в конструкторе сущности:

 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