2017-03-04 42 views
1

我有一個日期時間字段PHP錯誤調用一個成員函數格式()上陣列

/** 
* @var \DateTime 
* 
* @ORM\Column(name="date", type="datetime", nullable=true) 
*/ 
private $datetime; 

/** 
* Set date 
* 
* @param \DateTime $datetime 
* 
*/ 
public function setDate($datetime) 
{ 
    $this->datetime = $datetime; 

    return $this->datetime ?? new \DateTime(); 
} 

/** 
* Get date 
* 
* @return \DateTime 
*/ 
public function getDate(): \DateTime 
{ 
    return $this->datetime ?? new \DateTime(); 
} 

我此錯誤下面:

呼叫一個成員函數格式()上陣列

The error on the page

任何人都知道我爲什麼得到這個?

編輯:

下面是我用它來生成表單的日期時間值讀取,然後收集從表單中的數據,並在表中創建一個新的實體代碼:

$trainingform = new Training(); 

    $form = $this->createFormBuilder($trainingform) 
     ->add('Leader', TextType::class) 
     ->add('Date', DateTimeType::class, ['label' => 'Date and Time']) 
     ->add('topics', TextType::class, ['label' => 'Topics Being Covered']) 
     ->getForm(); 

    if ($form->handleRequest($request)->isValid()) { 
     $trainingform->setLeader($request->request->get('form')['Leader']); 
     $trainingform->setDate($request->request->get('form')['Date']); 
     $trainingform->setTopics($request->request->get('form')['topics']); 
     $em->persist($trainingform); 
     $em->flush(); 
    } 
+0

什麼是你的$值。您的$ value是一個數組,而不是一個obj –

+0

該值來自Symfony DateTime表單。 ' - > add('Date',DateTimeType :: class,['label'=>'Date and Time'])','$ trainingform-> setDate($ request-> request-> get('form ')['Date']);'相信這是你要求 – UnknownPerson

+0

顯示它的價值。 –

回答

0

爲了正確處理您的數據,您應該使用symfony表單的getData-方法,它會將您的請求轉換爲您之前在表單中指定的狀態。在你的情況應該是這樣的:

/** 
* Set date 
* 
* @param \DateTime $datetime 
*/ 
public function setDate(\DateTime $datetime) //typhint added 
{ 
    $this->datetime = $datetime; 
} 

`

二傳手不應該返回任何東西:

$trainingForm = new Training(); 

    $form = $this->createFormBuilder($trainingForm) 
     ->add('Leader', TextType::class) // 'Leader' should be named as your property 
     ->add('datetime', DateTimeType::class, ['label' => 'Date and Time']) //changed your Date to datetime as your property is 
     ->add('topics', TextType::class, ['label' => 'Topics Being Covered']) //should be named as your property as well 
     ->add('submit', SubmitType::class, ['label' => 'Submit form']) //should be there 
     ->getForm(); 

    $form->handleRequest($request) 

    if (form->isSubmitted() && form->isValid()) { 
     $trainingForm= $form->getData(); 
     $em->persist($trainingForm); 
     $em->flush(); 
    } 

爲了避免這樣的不一致,你可以在你的setter方法指定所需的類型順便說一句。然後,你會在你可以控制的步驟上得到你的錯誤,你會知道你應該在哪裏挖。

+0

謝謝你的工作。此外,我還在頁面上有一個單獨的提交按鈕,只是你知道。 – UnknownPerson

+0

是的,我知道你可以把它放在樹枝上,但我喜歡親自把它放在窗體上。很高興幫助。乾杯 – jaro1989

相關問題