Невозможно изменить формат строки на дату в Symfony 2.7

ОК, пытался отладить эту проблему в течение нескольких дней, и теперь я сдаюсь. У меня есть следующий конструктор форм

  Builder
    ->add('passDate', 'hidden', array('data'=>null, 'empty_data'=> date('Y-m-d',strtotime('1950-10-10'))))
    ->add('TDVLFirstIssue', 'hidden', array('data'=>null, 'empty_data'=> date('Y-m-d',strtotime('1950-10-10'))))
    ->add('TDVLExpiryDate', 'hidden', array('data'=>null, 'empty_data'=> date('Y-m-d',strtotime('2017-10-10'))));

и это моя сущность

/**
     * @var \DateTime
     *
     * @ORM\Column(name="passDate", type="date")
     * @Assert\NotBlank()
     */
    private $passDate;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="tdvlIssue", type="date")
     * @Assert\NotBlank()
     */
    private $TDVLFirstIssue;

    /**
     * @var \DateTime
     *
     * @Assert\GreaterThan(value = "+1 day midnight", message="Your TDVL require at least 1 month validity.")
     * @ORM\Column(name="tdvlExpiry", type="date")
     * @Assert\NotBlank()
     */
    private $TDVLExpiryDate;

public function setPassDate($passDate)
    {
        $this->passDate = $passDate;

        return $this;
    }

    /**
     * Get passDate
     *
     * @return \DateTime
     */
    public function getPassDate()
    {
        return $this->passDate;
    }

public function setTDVLFirstIssue($tDVLFirstIssue)
    {
        $this->TDVLFirstIssue = $tDVLFirstIssue;

        return $this;
    }

    /**
     * Get tDVLFirstIssue
     *
     * @return \DateTime
     */
    public function getTDVLFirstIssue()
    {
        return $this->TDVLFirstIssue;
    }
**
     * Set tDVLExpiryDate
     *
     * @param \DateTime $tDVLExpiryDate
     *
     * @return User
     */
    public function setTDVLExpiryDate($tDVLExpiryDate)
    {
        $this->TDVLExpiryDate = $tDVLExpiryDate;

        return $this;
    }

    /**
     * Get tDVLExpiryDate
     *
     * @return \DateTime
     */
    public function getTDVLExpiryDate()
    {
        return $this->TDVLExpiryDate;
    }

А вот и мой контроллер

$entity = new User();
$form = $this->createSystemUserForm($entity);
$form->handleRequest($request);

    if ($form->isValid()) {
         $em = $this->getDoctrine()->getManager();
         $entity->setTDVLFirstIssue(date('Y-m-d',strtotime('1950-10-10')));
         $entity->setTDVLExpiryDate(date('Y-m-d',strtotime('2018-10-10')));
         $entity->setPassDate(date('Y-m-d',strtotime('1950-10-10')));
    }

Что я пытаюсь сделать, так это передать дату по умолчанию в базу данных. поэтому я попытался использовать данные и формат функции преобразования формата vanilla php. Но когда я отправляю форму, она выдает мне эту ошибку, которая

Ошибка: вызов функции-члена format() в строке

public function convertToDatabaseValue($value, AbstractPlatform $platform)
{
    return ($value !== null)
        ? $value->format($platform->getDateFormatString()) : null;
}

. Я понял, что $passDate, $TDVLFirstIssue и $TDVLExpiryDate не могут быть пустыми, что определено в сущности как NotBlank(). Я подозреваю, что это из-за неудачного преобразования строки в дату. Так может помочь мне с этой проблемой? заранее спасибо. Примечание: обратите внимание, что я использую symfony 2.7.


person Achilles    schedule 24.08.2017    source источник
comment
новый \DateTime('сейчас')   -  person hounded    schedule 24.08.2017
comment
новый \DateTime() совпадает с новым \DateTime('now')   -  person Athos    schedule 24.08.2017


Ответы (1)


Я меняю дату построителя следующим образом, и это работает.

builder
->add('passDate', 'hidden', array('data'=>null, 'empty_data'=> date_create('1950-10-10')))
->add('TDVLFirstIssue', 'hidden', array('data'=>null, 'empty_data'=> date_create('1950-10-10')))
->add('TDVLExpiryDate', 'hidden', array('data'=>null, 'empty_data'=> date_create('2017-10-10')));

Надеюсь, поможет.

person Achilles    schedule 24.08.2017