내가 정기적 그래서 같은 몇 가지 필수가 아닌, 널 (NULL) 요소와 formType이 널 지속 새로운 기록, 그것은 작동합니다 - 그것은 NULL
입니다. 그러나 폼을 정의하고 나중에 폼을 업데이트하여 제거하려고하면 업데이트되지 않고 계속 유지됩니다.심포니 엔티티는
$data = $editForm->all();
print_r($data['mytime']->getData());
을 그리고 실제로 비어 다음 isValid()
블록에서
나는 확인. 엔티티와 동일 :
$entity->getMyTime()
이 비어 있습니다. 하지만 언제 나
$em->persist($entity);
$em->flush();
mytime
은 여전히 이전 값을 가지고 있습니다.
무엇이 누락 되었습니까?
[편집]의 요청에 따라, 전체 컨트롤러 코드 :
if(is_null($entity->getMyTime()) || empty($entity->getMyTime()))
$entity->SetMyTime((new \DateTime())->setTime(00, 00));
: 내가 답변에서 얻은 아이디어를 몇 가지 테스트 후, 나는
isValid()
섹션에서이 시도 [EDIT2]
public function myFunctionAction(Request $request ,$id, $to) {
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository(Day::class)->find($id);
$editForm = $this->createForm(new DayType(), $entity);
$editForm->add('submit', 'submit', array('label' => 'Update'));
$editForm->handleRequest($request);
if ($editForm->isSubmitted() && $editForm->isValid()) {
$em->persist($entity);
$em->flush();
}
return array(
'entity' => $entity,
'to' => $to,
'edit_form' => $editForm->createView(),
);
}
그래서 시간을 00으로 설정하면 잠재적으로 사용할 수 있습니다 ... 그러나 : - 다시로드 된 페이지에는 이전 값이 표시됩니다. $editForm
은 isValid()
확인 전에 (분명히) 업데이트되지 않았으므로 정상적인 것 같습니다. - 00:00를 DB에 저장하는 것이 NULL보다 적합하지 않기 때문에 Itls는 이상적이지 않습니다. 내가 그 오른쪽 코드라고 생각
...
$editForm->get('mytime')->setData(new \DateTime());
...
if ($editForm->isSubmitted() && $editForm->isValid()) {
$em->persist($entity);
$em->flush();
}
:
엔티티를 만들 때 전체 코드를 표시하고 유지하고 플러시 할 때까지 시간을 설정할 수 있습니까? –
@AlvinBunk가 컨트롤러 코드로 편집 되었습니까? –
엔티티에 setMytime()이라는 setter 메소드가 있는데, M은 대문자로되어 있습니까? 양식 필드가 엔티티에 매핑되지 않은 것 같습니다. 개발 환경의 양식 섹션에있는 Symfony 프로파일 러를 참조하십시오. – ste