|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre régulier
![]() Développeur Web Inscription : septembre 2008 Messages : 253 ![]() |
Voilà un cas intéressant qui n'est pas (ou peu mentionné) sur la toile.
Un objet "document" Un administrateur se connecte, le modifie. On veut avoir le suivit des modification et quel administrateur a modifié l'objet document. Un schéma simplifié qui me parait correct : Code :
Ma première idée est d'utiliser un embed form pour les modifications et de réécrire l'executeCreate autogénéré de l'administration pour voir qui a modifié le document. Mais cela me parait un peu bordélique. |
||
|
|
00
|
|
|
#2 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Je ne pense pas que ce type d'action soit a traiter dans un form.
Par contre, dans l'objet du modèle, avec une réécriture de l'action save() cela me semble une meilleur idée. Je me méfierais, malgré tout dans ton schéma de la notion de cascade pour l'effacement. Si on supprime un enregistrement, on perd la trace des modifications, y compris la suppression. Est-ce une bonne idée ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#3 |
![]() ![]() ![]() |
![]() Il y a aussi le behaviour de Doctrine Versionable : http://www.doctrine-project.org/proj...rs:versionable Maintenant, ça doit encore être un peu à tweaker sur les bords, ça ne fait que sauvegarder des copies des enregistrements à chaque modification. Maintenant, utiliser des forms pour cela... Et si tu devais faire une modification automatique (comme les bots de Wikipedia) depuis ton application ? Tu fais remplir les forms par symfony pour se les renvoyer ?
__________________
Le troisième défi Qt ! Vous souhaitez participer aux rubriques Qt ou PyQt/PySide (tutoriels, FAQ, traductions, sources) ? Contactez-moi par MP. Qt : La FAQ : 200 QR symfony : sfDoctrineGuard Pas de question d'ordre technique par MP ! |
|
00
|
|
|
#4 | ||
|
Membre régulier
![]() Développeur Web Inscription : septembre 2008 Messages : 253 ![]() |
Bonne remarques en effet, ce n'est pas intéressant de passer par les formulaire.
Je vais passer par la fonction "versionable" doctrine et traquer qui a modifié le document dans la fonction save. Il n'y a que les administrateurs qui peuvent réaliser des changement donc je pense que cela ne posera pas de problème. Pour effacer en cascade un enregistrement cela me parait correct... C'est sur que pas moyen de restaurer ou de voir les anciennes version après. A voir de plus près. Question bête mais c'est bien de la façon suivante ? Dans Document.class.php : Code :
Je ne comprends pas j'ai essayé $this->getUser()->getId() et plein de trucs mais j'ai toujours "Doctrine_Null Object()" comme valeur de Id... J'ai pourtant bien : Code :
class myUser extends sfGuardSecurityUser |
||
|
|
00
|
|
|
#5 | ||
|
Membre à l'essai
![]() Inscription : avril 2010 Messages : 26 ![]() |
Alors tu peux soit overloader la methode save comme tu le fais.
Sinon il y a la methode preSave si tu ne veux pas toucher a la methode save. pour récupérer l'utilisateur quand tu n'est pas dans ton controlleur, il te faudra passer par le sfContext. Code :
|
||
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Développeur Web Inscription : septembre 2008 Messages : 253 ![]() |
Ah oui en effet, je n'ai pas réalisé que je ne pouvais pas récupérer l'utilisateur dans la couche model de cette façon.
Merci, et super pour les méthodes preSave() et postSave(), c'est quand même bien pensé doctrine ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com