[英]Symfony 2 + Doctrine 2 - DateTime fields not persisting
我有一個Blah
類型的實體,具有以下字段:
/**
* @var datetime $begin
*
* @ORM\Column(name="begin", type="datetime", nullable=true)
*/
private $begin;
/**
* @var datetime $end
*
* @ORM\Column(name="end", type="datetime", nullable=true)
*/
private $end;
使用以下獲取器/設置器:
/**
* @param $begin
*/
public function setBegin($begin)
{
$this->begin = $begin;
}
/**
* @return \DateTime
*/
public function getBegin()
{
return $this->begin;
}
/**
* @param $end
*/
public function setEnd($end)
{
if ($end < $this->begin) {
$this->end = $this->begin->add(\DateInterval::createFromDateString('1 day'));
} else {
$this->end = $end;
}
}
/**
* @return \DateTime
*/
public function getEnd()
{
return $this->end;
}
相應的表單類型具有:
$builder->add('begin', 'datetime', array(
'label' => 'Begin',
'required' => false,
));
$builder->add('end', 'datetime', array(
'label' => 'End',
'required' => false,
));
以及相關方法的表單處理部分:
$form = $this->createForm(new BlahType(), $blah);
if ($request->getMethod() == 'POST') {
$postData = $request->request->all();
if (!empty($postData['save'])) {
$form->handleRequest($request);
$numThings = $postData['blah']['numThings'];
if ($numThings) {
for ($i = 0; $i < $numThings; ++$i) {
$thing = new Thing();
$blah->addThing($thing);
}
}
$em->persist($blah);
$em->flush();
}
}
當我嘗試保存這些條目時,盡管填充的實體為每個條目包含兩個數組,但null
會傳遞回該實體
傳回實體的屏幕截圖:
在$form->handleRequest()
之后,填充的實體應該具有的屏幕截圖:
不用說,我很困惑。 根據docs , datetime
字段應默認input
datetime
,但我將數據作為每個字段的兩個數組序列返回-一個包含日,月和年的數組,以及其他帶有小時和分鍾。 即使這樣, null
仍會傳遞回實體並保留在數據庫中。
莫名其妙。 有任何建議/答案嗎?
編輯:窗體本身在其viewData
有null
:
弄清楚了。 問題是由於PHP莫名其妙地只能識別大陸/城市時區,而不是舊的國家/時區時區。 美國/東部不再有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.