私はこのフォームとコントローラーを持っていますhttp://pastebin.com/wLPyXvbj
DBにデータを追加するとき(新しいデータ)は機能していますが、編集中に問題が発生したため、ここでできる限り説明します。
- ケース1
私はEVERY SINGLE FIELDを編集し、データはDB OKで更新されます。
- ケース 2
すべてを編集するのではなく、ユーザーに編集してもらいたいフィールドだけを編集しようとしています。更新に使用できるフィールドは問題なく DB に挿入されますが、古い値を DB に保持する代わりにユーザーに変更してほしくない他のフィールド (変更されていないため) はすべて空になります。値。
したがって、「すべてのフィールドの編集」ではなく「選択的な編集」に何か問題がありますが、問題を見つけることができません...一部のフィールドは静的で編集がないため、すべてのフィールドの編集フォームを作成できません。
これは編集アクションに使用しているコントローラーです。newAction
public function agentupdateAction(Request $request, $id)
{
$em = $this->getDoctrine()->getManager();
$comments = new VtigerTicketcomments();
$session = $this->get("session");
$proyecto = $session->get('proyecto');
$assets = $session->get('assets');
$contacts = $em->createQuery('SELECT u.contactid, u.email, u.phone, u.mobile FROM WbsGoclientsBundle:VtigerContactdetails u')->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
foreach($assets as $a)
$uuids[$a['UUID']] = $a['UUID'];
$entity = $em->getRepository('WbsGoclientsBundle:VtigerTicketcf')->find($id);
$ticket = $entity->getId();
$solution = $ticket->getSolution();
$ticketcfForm = $this->createForm(new TicketcfType($uuids, $session->get('contacts'), $session->get('rol'), $session->get('tecnicos')), $entity);
$ticketcfForm->submit($request);
if($ticketcfForm->isValid())
{
$data = $ticketcfForm->getData();
if($ticket->getStatus() == 'Closed')
{
if(!$ticket->getSolution())
$ticket->setSolution($solution);
$workflow = new ComVtigerWorkflowtaskQueue();
$workflow->setTaskid('9');
$workflow->setEntityid('9x'.$id);
$workflow->setDoafter('0');
$em->persist($workflow);
$em->flush();
$hoy = new \DateTime();
if($ticketcf->getFReso() == null)
$ticketcf->setFReso($hoy->format('d-m-Y H:i:s'));
}
$em->persist($ticket);
$em->flush();
$em->persist($entity);
$em->flush();
return $this->redirect($this->generateUrl('tickets_show', array('id' => $ticket->getTicketNo())));
}
return $this->render('WbsGoclientsBundle:Tickets:edit.html.twig', array(
'entity' => $entity,
'edit_form' => $editForm->createView(),
'rol' => $session->get('rol'),
'ticket_form' => $ticketForm->createView(),
));
}