Attention : Le contenu de ces pages n'a pas été mis à jour depuis longtemps. Il est probablement obsolète pour Firefox 4.0/Gecko 4.0 et supérieur. Pour du contenu plus récent, allez consulter developer.mozilla.org.

Exemple php rdf smarty

Templates RDF et PHP/Smarty

  • Smarty est un moteur de "templates" (modèles) pour PHP. De façon plus précise il permet de séparer la logique applicative (comment fonctionne l'application) de la présentation. Dans une architecture particulièrement séduisante lorsque l'on veut conserver un certaine lisibilité du code.

Exemple créer une liste déroulante XUL alimenté par un template RDF construit à partir d'une annuaire LDAP : ldap_exemple.xul

Code xul pour la liste déroulante ldap_exemple.xul

   <?xml version="1.0"?>
   <?xml-stylesheet href="[[chrome://global/skin/]]" type="text/css"?>
   <?xml-stylesheet href="css/enregistrement_temps.css" type="text/css"?>
   <window  id="Xululu-LDAP"
            xmlns="[[http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"]]>
   <vbox flex="1">
      <menulist id="collaborateur-id" label="collaborateurs">
         <menupopup datasources="ldap_rdf.php" ref="[[urn:ldap:people"]]>
            <template>
               <menuitem uri="rdf:*" id="[[rdf:urn:ldap:rdf#cn]]"
                         label="[[rdf:urn:ldap:rdf#cn]]"
                         value="[[rdf:urn:ldap]]: rdf#uid"/>
            </template>
         </menupopup>
      </menulist>
   </vbox>
   </window>

Code PHP pour la logique applicative ldap_rdf.php

   <?php
   $liste=ldap::GetRDFPeople("ou=people,o=xululu",
                             "(cn=*)",
                             array("sn","uid","cn","telephonenumber"));
   $s = new XululuSmarty;
   header( "Content-type: text/xml" );
   $s->assign("people",$liste);
   $s->display('ldap_rdf.tpl');
   ?>

Template PHP pour la présentation ldap_rdf.tpl

   <?xml version="1.0"?>
   <RDF:RDF [[xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#]]"
            [[xmlns:PEOPLE="urn:ldap:rdf#"]]>
   <RDF:Description RDF:about="[[urn:ldap:people"]]>
      <PEOPLE:cn>people</PEOPLE:cn>
   </RDF:Description>
   {foreach from=$people item=item}
      <RDF:Description RDF:about='[[urn:ldap:people:{$item.uid}']]>
         <PEOPLE:cn>{$item.cn}</PEOPLE:cn>
         <PEOPLE:uid>{$item.uid}</PEOPLE:uid>
         <PEOPLE:phone>{$item.telephonenumber}</PEOPLE:phone>
      </RDF:Description>
   {/foreach}
   <RDF:Seq RDF:about="[[urn:ldap:all-PEOPLE]]" PEOPLE:name="XULULU">
      <RDF:li>
         <RDF:Seq RDF:about="[[urn:ldap:people"]]>
            {foreach from=$people item=item}
               <RDF:li RDF:resource="[[urn:ldap:people:{$item.uid}"/]]>
            {/foreach}
         </RDF:Seq>
      </RDF:li>
   </RDF:Seq>
   </RDF:RDF>

Gestion du cache pour les templates RDF

Pour les problèmes de cache ou la mise à jour d'une source de données RDF, voir SourceDeDonneesRdf .


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.