Когда я использовал форму набора полей, кроме данных поля даты, установленных во время редактирования. Но во время редактирования данные даты не установлены должным образом и выдают ошибку.
когда я привязываю объект блога к форме, выдает ошибку "Объект предоставлен помощнику Escape, но флаги не разрешают рекурсию" из-за объекта даты. Если я прокомментирую поле, связанное с датой, форма привязывается правильно.
Пожалуйста, предоставьте решения о том, как установить данные даты во время редактирования.
Объект блога:
/**
* @var \DateTime
*
* @ORM\Column(name="start_date", type="date", nullable=false)
*/
protected $startDate;
Добавить набор полей блога:
$this->add([
'name' => 'startDate',
'type' => 'text',
'attributes' => [
'id' => 'startDate',
'class' => 'form-control date',
],
'options' => [
'label' => 'Start date',
'label_options' => [
'disable_html_escape' => true,
],
]
]);
код контроллера:
public function editAction() {
try {
$blogId = $this->params()->fromRoute('id');
$form = new AddBlogForm($this->em, $blogId);
$blogObj = $this->em->getRepository(Blog::class)
->find($blogId);
**$form->bind($blogObj);**
$request = $this->getRequest();
if ($request->isPost()) {
$requestData = $request->getPost()->toArray();
$form->setData($requestData);
if ($form->isValid()) {
$this->em->flush();
$this->em->commit();
$this->flashmessenger()->addSuccessMessage('Blog upate');
return $this->redirect()->toRoute('blog');
}
}
return [
'form' => $form,
'blogId'=> $this->params()->fromRoute('id')
];
} catch (\Exception $ex) {
$this->em->rollback();
throw new \Exception($ex->getMessage());
}
}