好的,尝试调试这个问题几天,现在我放弃了。 我有followig表单构建器
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。
答案 0 :(得分: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')));
希望它有所帮助。