Développer avec RBS Change : [Import-data] Cas des propriétés de forme "XXXid"
-
04/11/2011 15:27
Bonjour,
Je cherche à insérer, en import-data, un users/websitefrontuser. Celui-ci a une propriété obligatoire websiteid qui référence son website. Cette propriété étant de type Integer, comment la référencer ?
On ne peut pas passer par un websiteid-refid classique, car celui-ci référence l'objet et non pas son identifiant ; le seul moyen qu'on ait trouvé est de copier/coller l'identifiant du website trouvé dans la base de données, mais ça n'est clairement pas viable.
Merci d'avance ! -
04/11/2011 15:58
Bonjour,
En fait le webstiteid sera renseigné automatiquement du moment que vous créez votre websitefrontenduser sous un websitefrontendgroup, le websitefrontendgroup étant lié explicitement à un site lui aussi (cf la méthode preInsert du users_WebsitefrontenduserService).
Des exemple de création d'utilisateurs sont disponibles notamment dans les fichier sample.xml des modules forums et customer. -
04/11/2011 16:07
Pour le cas particulier du website ça résout le problème effectivement. Mais d'un point de vue plus général, y a-t-il une méthode ? Car, par exemple, nous avons injecté le document websitefrontenduser pour rendre obligatoire la civilité. Comment trouver le bon titleid ? -
04/11/2011 16:50
En fait ça marchera bien en utilisant title-refid. En effet, pour affecter les valeurs, on commence par regarder s'il y a une propriété sur le document ayant le bon nom (ici title n'existe pas en 3.5 puisqu'elle a été remplacée par titleid) si elle n'existe pas, on cherche un setter (en l'occurrence setTitle existe et prend bien un document en paramètre). Tout cela se passe dans la classe import_ScriptDocumentElement (dans framework/persistentdocument/import), à la méthode affectDocumentProperties.
Exemple de code (que je viens de tester) :<editablelist listid="modules_users/title"> <item byLabel="M" id="tm" /> </editablelist> <websitefrontendgroup for-default-website="true"> <websitefrontenduser login="testTitle" firstname="Test" lastname="Title" email="test.title@rbs.fr" password="abc123" title-refid="tm" /> </websitefrontendgroup>
En passant, dans la future version 4.0, nous avons introduit quelques nouveaux types de données, avec entre autres DocumentId qui se comporte comme un entier sauf que le setter accepte soit un id, soit une instance de document (et au passage de proposer un getter généré getXxxInstance renvoyant l'instance). On pourra donc dans cette version directement utiliser un -refid sur des propriétés de ce type.Édité par Gaël Port 04/11/2011 16:50
-
04/11/2011 18:14
OK merci, ça fonctionne bien !
Merci de prendre connaissance et de respecter les règles des forums.