我的实体:
/**
* @var \DateTime $publishedAt
*
* @ORM\Column(name="published_at", type="date")
*
* @Assert\Date()
*/
private $publishedAt;
/**
* Set publishedAt
*
* @param \DateTime $publishedAt
* @return MagazineIssue
*/
public function setPublishedAt(\DateTime $publishedAt)
{
$this->publishedAt = $publishedAt;
return $this;
}
/**
* Get published_at
*
* @return \DateTime
*/
public function getPublishedAt()
{
return $this->publishedAt;
}
我的表单生成器:
$builder->add('publishedAt');
我的观点:
{{ form_widget(form) }}
当我选择在选择的日期并提交表单我catche错误:
Catchable Fatal Error: Argument 1 passed to ... must be an instance of DateTime,
string given, called in .../vendor/symfony/symfony/src/Symfony/Component/Form
/Util/PropertyPath.php on line 537 and defined in ... line 214
为什么会发生? 如果我更换与现场二传手public function setPublishedAt($publishedAt)
我得到了错误:
Fatal error: Call to a member function format() on a non-object
in .../vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateType.php on line 44
如果我改变了表单生成器来
$builder->add('publishedAt','date')
一切工作正常。 为什么会发生? 为什么symfony中不能猜测它,并通过现场二传手正确的日期格式(\日期时间,而不是字符串)?
编辑:如果我删除@Assert\Date()
然后一切工作正常了。 我认为这是一个错误sf2.1与猜测的日期字段类型