Desarrollo web PHP

Agregar ultima fecha de modificación automaticamente en el CRUD de Symfony2

A veces es necesario ingresar directamente un registro a la base de datos el cual no debe ser manipulado previamente simplemente sirve como un campo de auditoria y de esta manera revisar en que fecha se realizo el cambio.

Cuando utilizamos el CRUD generado por Symfony2 nos genera en el update una función similar a esta:

public function updateAction(Request $request, $id)
{
$em = $this->getDoctrine()->getManager();

$entity = $em->getRepository('AppBundle:ControlCambios')->find($id);

if (!$entity) {

throw $this->createNotFoundException('Unable to find ControlCambios entity.');
}

$deleteForm = $this->createDeleteForm($id);
$editForm = $this->createEditForm($entity);

$editForm->handleRequest($request);

if ($editForm->isValid()) {
$em->flush();

return $this->redirect($this->generateUrl('controlcambios_edit', array('id' => $id)));
}

return array(
'entity' => $entity,
'edit_form' => $editForm->createView(),
'delete_form' => $deleteForm->createView(),
);
}

Simplemente para agregar este registro en el campo previamente creado basta con agregar la siguiente linea:

//Agrega directamente la fecha de la ultima revision
$entity->setFechaUltimaRevision(new \DateTime());

El método finalmente quedaría de la siguiente manera:

public function updateAction(Request $request, $id)
{
$em = $this->getDoctrine()->getManager();

$entity = $em->getRepository('AppBundle:ControlCambios')->find($id);
//Agrega directamente la fecha de la ultima revision
$entity->setFechaUltimaRevision(new \DateTime());

if (!$entity) {

throw $this->createNotFoundException('Unable to find ControlCambios entity.');
}

$deleteForm = $this->createDeleteForm($id);
$editForm = $this->createEditForm($entity);

$editForm->handleRequest($request);

if ($editForm->isValid()) {
$em->flush();

return $this->redirect($this->generateUrl('controlcambios_edit', array('id' => $id)));
}

return array(
'entity' => $entity,
'edit_form' => $editForm->createView(),
'delete_form' => $deleteForm->createView(),
);
}

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: