Ошибка 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(); } 

Я эту ошибку ниже:

Вызов в формате функции участника () в массиве

Ошибка на странице

Кто-нибудь знает, почему я это понял?

Редактировать:

Ниже приведен код, который я использую для создания формы для чтения в значении 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(); } 

Чтобы правильно обрабатывать ваши данные, вы должны использовать getData метод формы symfony, который раньше будет преобразовывать ваш запрос в состояние, указанное вами в вашей форме. В вашем случае это должно выглядеть так:

  $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; } 

`

Сеттер не должен ничего возвращать. Затем вы получите свою ошибку на шаге, который вы можете контролировать, и вы узнаете, где вы должны копать.