Evento para la actualización de propiedades.

35 views
Skip to first unread message

JavierBravo

unread,
Feb 10, 2012, 4:31:17 AM2/10/12
to symfony-es
Hola a todos,

Soy relativamente nuevo en Symfony2. Actualmente estoy trabajando en
una aplicación en la que pretendo llevar un control históricos de los
cambios realizados en las distintas entidades que contiene. Para
realizar esta tarea hasta ahora he hecho uso de los eventos
"postUpdate" y "prePersist" que me permite llevar a cabo acciones
cuando las entidades son creadas y/o actualizadas.

Actualmente me gustaría bajar el nivel de detalle para el control de
los cambios de manera que pueda realizar tareas distintas dependiendo
de la PROPIEDAD de la entidad que ha sido actualizada. Mi pregunta es:
¿Existe alguna manera de automatizar algún evento para que sea
ejecutado cuando cambie una propiedad de una entidad? ¿La única
alternativa que tengo es realizar la comprobación manual de las
propiedades de la entidad?

Muchas gracias y felicidades por el grupo! Resulta de gran ayuda !

Javier.

Absalon Valdes Ormeño

unread,
Feb 10, 2012, 8:37:36 PM2/10/12
to symfo...@googlegroups.com
Si, si existe. Lo que quieres hacer se hace registrando listeners para el sistema de eventos de doctrine. 


Creas una clase Listener y ahi "atrapas" los eventos que se general a nivel global, por lo que sera valido para todas las entidades.

Absalon Valdes Ormeño

unread,
Feb 10, 2012, 8:39:07 PM2/10/12
to symfo...@googlegroups.com
En la documentacion oficial de Doctrine 2 tambien hay un ejemplo mas detallado:

Carlos Zuniga

unread,
Feb 11, 2012, 9:04:26 AM2/11/12
to symfo...@googlegroups.com
2012/2/10 JavierBravo <javib...@gmail.com>:

Doctrine trae un sistema para notificar eventos a nivel de cambios en
propiedades [0], eso sí, tienes que algo de código a los setters de
tus entidades para emitir los eventos, pero esto tal vez pueda
disminuir usando el método __set()

Por cierto, te puede interesar usar DoctrineExtensions con el bundle
StofDoctrineExtensionsBundle [1] que trae una extensión loggable que
permite guardar versiones de objetos y revertirlas.

Saludos

[0] https://github.com/stof/StofDoctrineExtensionsBundle
[1] http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/change-tracking-policies.html#notify
--
Linux Registered User # 386081
A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos
de leer manuales.

JavierBravo

unread,
Feb 13, 2012, 3:33:09 AM2/13/12
to symfony-es
Muchas gracias Carlos, algo así es lo que buscaba.

Ahora toca probarlo para ver si se ajusta a mis necesidades.

Saludos.

Marcelo Prizmic

unread,
Dec 27, 2012, 5:35:54 PM12/27/12
to symfo...@googlegroups.com
Hola Carlos
Traté por todos los medio hacer andar el StofdoctrineExtensionsBundle.
Le creo los atributos "created" y updated" a la entidad y trato de regenerar la entity con
app/console d:g:entities XXBundle:Entity
pero me da error en el method scalarNode
No puedo pasar de allí.
Con que verisones de SF y de Doctrine lo trabajaste?
Gracias
Marcelo



--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Google Groups.
Para publicar en este grupo, envía un email a symfo...@googlegroups.com
Para darte de baja, envía un email a symfony-es+...@googlegroups.com
El resto de opciones puedes encontrarlas en http://groups.google.com/group/symfony-es?hl=es

Reply all
Reply to author
Forward
0 new messages