Développer avec RBS Change : Insertion de département dans un initData

  • 45834.1

    25/10/2011 18:54


    fdurrieu
    Rang : Membre
    Bonjour,

    Je n'arrive pas à intégrer un département dans un initData.
    Ci dessous le code concerné qui essaie de l'insérer :
        <documentRef type="modules_website/folder" byLabel="Département français">
            <documentRef type="modules_zone/department" id="dep" byLabel="Ain" />
        </documentRef>
    


    Ce qui génère l'erreur suivante :
    Error line 20 (/home/fdurrieu/workspacePHP/repository-3.5.0/framework/framework-3.5.0/persistentdocument/import/ScriptDocumentRefElement.class.php): No document found for documentRef with type modules_zone/folder

    Merci d'avance pour votre réponse.

    Édité par fdurrieu 25/10/2011 18:55

  • 45834.2 en réponse à 45834.1 écrit par fdurrieu

    26/10/2011 09:42


    Gaël Port
    Titre : Développeur RBS Change
    Rang : Expert
    Bonjour,

    Comme précisé dans la documentation, l'élément documentRef sert à faire référence à des document déjà existants sans les modifier. En gros on l'utilise lorsqu'on veut être sûr de ne pas toucher au document en question (notamment parce que certains types de documents ont des traitements particuliers dans leur classe d'import xxx_YyyScriptDocumentElement qui obligent à renseigner un certain nombre de propriétés même si le document existe déjà).

    Pour importer un nouveau document il faut utiliser l'élément qui lui correspond après avoir importer le binding de son module. Dans le cas d'un département, c'est me module zone et l'élément department.


    Si par contre vous souhaitez faire référence à un document department importé par ailleurs (en l'occurrence dans l'init-data du module zone), vous pouvez effectivement passer par un documentRef. Il faut toutefois prendre garde à bien exécuter votre script après l'import du document auquel vous voulez faire référence.

    Par défaut les imports initiaux sont effectués module par module, dans l'ordre alphabétique (donc zone en tout dernier en ce qui concerne les modules standards). Si le script d'initialisation de votre module doit faire référence à des documents importés par un autre, il vous faudra renseigner la méthode getRequiredPackages dans <votreModule>/setup/initData.php en renvoyant le tableau des modules à importer avant lui (par défaut cette méthode renvoie simplement un tableau vide).
  • 45834.3 en réponse à 45834.2 écrit par Gaël Port

    26/10/2011 10:18


    fdurrieu
    Rang : Membre
    Bonjour,

    J'avais bien compris le fonctionnement des balises documentRef dans un initData, le xml que j'essaie d'exécuter est bien exécuté après un premier import effectué après un reset-database. Mon site est donc neuf, comprenant 5 sites et une arborescence pour chaque, les init.xml de chaque module ayant été exécuté. Les départements sont donc de base dans la gestion du contenu et c'est à ceux ci que j'essaie de faire référence, cependant mes "type" ne sont surement pas les bons puisque je retrouve toujours des erreurs du genre :

    Error line 20 (/home/fdurrieu/workspacePHP/repository-3.5.0/framework/framework-3.5.0/persistentdocument/import/ScriptDocumentRefElement.class.php): No document found for documentRef with type modules_generic/folder

    Error line 20 (/home/fdurrieu/workspacePHP/repository-3.5.0/framework/framework-3.5.0/persistentdocument/import/ScriptDocumentRefElement.class.php): No document found for documentRef with type modules_zone/department
  • 45834.4

    26/10/2011 11:21


    Gaël Port
    Titre : Développeur RBS Change
    Rang : Expert
    Alors déjà dans votre code je vois un type="modules_website/folder" qui devrait plutôt être type="modules_generic/folder" (même si apparemment il traduit ça automatiquement, je ne garantis pas ce que cette traduction automatique fonctionnera toujours).


    À part ça, je viens de réaliser un test sur mon projet de dev avec une base initialisée et je n'ai aucun message d'erreur avec le code XML que vous indiquez... J'arrive bien à itialiser un document bidon contenant un champ de type zone :
    <?xml version="1.0" encoding="UTF-8"?>
    <script>
    	<binding fileName="modules/abc/persistentdocument/import/abc_binding.xml" />
    	<binding fileName="modules/zone/persistentdocument/import/zone_binding.xml" />
    
    	<documentRef type="modules_generic/folder" byLabel="Département français">
    		<documentRef type="modules_zone/department" id="dep" byLabel="Ain" />
    	</documentRef>
    
    	<rootfolder module="abc">
    		<abc byLabel="Test zone" zone-refid="dep" />
    	</rootfolder>
    </script>
  • 45834.5 en réponse à 45834.4 écrit par Gaël Port

    02/11/2011 10:45


    fdurrieu
    Rang : Membre
    Bonjour,

    Le problème venait du fait que les documentRef n'étaient pas à la racine du script.
    Des sample.xml l'utilisaient pas forcément à la racine, je pensais donc que c'était possible.

    Merci pour votre réponse.
 
Merci de prendre connaissance et de respecter les règles des forums.
 
1461 membres
Aucun membre connecté