2017-03-04 3 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

誰もが知っていますか?

編集:以下

私はDateTime値を読み込み、その後、フォームからデータを収集し、テーブルに新しいエンティティを作成するフォームを生成するために使用するコードです:

$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フォームに由来します。 $ training-> setDate($ request-> request-> get( 'form()) ' - > add(' Date '、DateTimeType :: class、'ラベル '=>'日付と時刻 ' ')[' Date ']);'あなたが – UnknownPerson

+0

を求めていることは、ここに価値があることを示すものと信じています。 –

答えて

0

は、正しくデータを処理するには、あなたが前にあなたの形式で指定した状態にあなたの要求を変えていくのsymfonyフォームのgetData -methodを、使用する必要があります。あなたのケースでは、それは次のようになります。そのような矛盾を回避するために

$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メソッドに必要な型を指定することができます。

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

`

セッターは何を返すべきではありませんbtw。その後、あなたがコントロールできるステップにエラーが発生し、どこを掘り起こすべきかがわかります。

+0

感謝。また、ページに別の送信ボタンがありました。 – UnknownPerson

+0

ええ、私はあなたがそれを小枝でレンダリングできることを知っていますが、私はそれを個人的に形に保つのが好きです。それが助けてくれてうれしい。乾杯 – jaro1989