ОК, пытался отладить эту проблему в течение нескольких дней, и теперь я сдаюсь. У меня есть следующий конструктор форм
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.