| auteur : Guillaume Rossolini |
ModeliXe est disponible sous forme d'une arhive ZIP sur le site de Florian.
Pour l'installer, il suffit de décompresser l'archive dans un répertoire de votre serveur. Comme toute bibliothèque, il est recommandé de ne pas placer les scripts sous l'arborescence publique mais plutôt à l'extérieur.
La configuration se fait une fois pour tous les sites qui utilisent ModeliXe :
|
lien : Doc officielle : Mise en place et paramétrage
|
| auteur : Guillaume Rossolini |
Le code suivant permet de déclarer un objet ModeliXe :
$page = new ModeliXe(' templates/index.tpl ' );
|
|
| auteur : Guillaume Rossolini |
Avec certaines versions de ModeliXe, il faut apporter quelques corrections avant de pouvoir l'utiliser correctement.
Si vous avez PHP 5.2 ou +, les expressions rationnelles classiques POSIX ne sont plus incluses qu'en PECL (afin de laisser la place à l'extension PCRE), ce qui rend indisponible la fonction ereg() utilisée par la classe de gestion d'erreurs de ModeliXe, ErrorManager. Il faut donc apporter la modification suivante :
Trouver dans ErrorManager::SetErrorOut() : | |
|
| auteur : Guillaume Rossolini |
ModeliXe offre deux syntaxes pour écrire le gabarit HTML : XML ou Pear.
Exemple de gabarit ModeliXe avec la syntaxe XML | < mx : bloc id = " subject " >
< div class = " bloc_cours " >
< div class = " titre_cours " > < mx : text id = " title " / > < / div >
< / div >
< br / >
< br / >
< / mx : bloc id = " subject " >
|
Exemple de gabarit ModeliXe avec la syntaxe Pear | {start id="subject"}
< div class = " bloc_cours " >
< div class = " titre_cours " > {text id="title"}< / div >
< / div >
< br / >
< br / >
{end id="subject"}
|
|
| auteur : Guillaume Rossolini |
Il y a plusieurs manières d'envoyer des données au gabarit en PHP.
Méthode 1 (contenu normal dans le gabarit) :
Syntaxe XML | < span > < mx : text id = " nickname " / > < / span >
|
Syntaxe Pear | < span > {text id="nickname"}< / span >
|
Envoi depuis PHP | $ nickname = ' Yogui ' ;
$template ->MxText (' nickname ' , $ nickname );
|
Méthode 2 (contenu en tant qu'attribut HTML dans le gabarit) :
Syntaxe XML | < meta name = " description " MxAttribut = " content:meta_description " / >
|
Syntaxe Pear | < meta name = " description " content = " {text id= " meta_description " } " / >
|
Envoi depuis PHP | $ description = ' Mettre ici la description du site ' ;
$template ->MxText (' meta_description ' , $ description );
|
Un avantage de la syntaxe XML par rapport à la syntaxe Pear est que le gabarit HTML est aux normes définies par le W3C.
|
lien : http://php.developpez.com/faq/tmp/langage/?page=securite#securite-failleXSS
|
| auteur : Guillaume Rossolini |
Avec la syntaxe XML du gabarit, il faut utiliser l'élément XML "mx:bloc".
< mx : bloc id = " subject " >
< div class = " bloc_cours " >
< div class = " titre_cours " > < mx : text id = " title " / > < / div >
< / div >
< br / >
< br / >
< / mx : bloc id = " subject " >
|
Avec la syntaxe Pear du gabarit, les mots clefs "start" et "end" permettent de définir les bornes.
{start id="subject"}
< div class = " bloc_cours " >
< div class = " titre_cours " > {text id="title"}< / div >
< / div >
< br / >
< br / >
{end id="subject"}
|
Depuis PHP, il faut utiliser la méthode MxText() pour envoyer les données au gabit, puis MxBloc() pour que la classe génère le HTML correspondant.
$ subjects = array
(
' title ' = > ' Premier titre ' ,
' title ' = > ' Second titre ' ,
' title ' = > ' Troisième titre '
);
foreach ($ subjects as $ subjects )
{
$template ->MxText (' subject.title ' , $ subject [ ' title ' ] );
$template ->MxBloc (' subject ' , ' loop ' );
}
|
|
lien : http://php.developpez.com/faq/tmp/langage/?page=securite#securite-failleXSS
|
| auteur : Guillaume Rossolini |
Voici un exemple sur trois niveaux en situation réelle.
Gabarit syntaxe XML | < mx : bloc id = " subject " >
< div class = " bloc_cours " >
< div class = " titre_cours " > < mx : text id = " title " / > < / div >
< mx : bloc id = " category " >
< div class = " categorie_cours " > < mx : text id = " title " / > < / div >
< div class = " liste_cours " >
< ul >
< mx : bloc id = " tutorial " >
< li >
< a href = " <mx:text id= " uri " /> "
> < mx : text id = " title " / > < / a > : < mx : text id = " description " / >
< / li >
< / mx : bloc id = " tutorial " >
< / ul >
< / div >
< hr / >
< / mx : bloc id = " category " >
< / div >
< br / >
< br / >
< / mx : bloc id = " subject " >
|
Gabarit syntaxe Pear | {start id="subject"}
< div class = " bloc_cours " >
< div class = " titre_cours " > {text id="title"}< / div >
{start id="category"}
< div class = " categorie_cours " > {text id="title"}< / div >
< div class = " liste_cours " >
< ul >
{start id="tutorial"}
< li >
< a href = " {text id= " uri " } "
> {text id="title"}< / a > : {text id="description"}
< / li >
{end id="tutorial"}
< / ul >
< / div >
< hr / >
{end id="category"}
< / div >
< br / >
< br / >
{end id="subject"}
|
$ sql = ' SELECT id, title
FROM subject ' ;
$ result = mysql_query($ sql ) or die(mysql_error());
while ($ subject = mysql_fetch_assoc($ result ))
{
$template ->MxText (
' subject.title ' ,
$ subject [ ' title ' ] );
$ sql = ' SELECT id, title
FROM category
WHERE subject_id = ' . $ subject [ ' id ' ] ;
$ categories = mysql_query($ sql ) or die(mysql_error());
while ($ category = mysql_fetch_assoc($ categories ))
{
$template ->MxText (
' subject.category.title ' ,
$ category [ ' title ' ] );
$ sql = ' SELECT id, uri, title, description
FROM tutorial
WHERE category_id = ' . $ category [ ' id ' ] ;
$ tutorials = mysql_query($ sql ) or die(mysql_error());
while ($ tutorial = mysql_fetch_assoc($ tutorials ))
{
$template ->MxText (
' subject.category.tutorial.uri ' ,
$ tutorial [ ' uri ' ] );
$template ->MxText (
' subject.category.tutorial.title ' ,
$ tutorial [ ' title ' ] );
$template ->MxText (
' subject.category.tutorial.description ' ,
$ tutorial [ ' description ' ] );
$template ->MxBloc (' subject.category.tutorial ' , ' loop ' );
}
$template ->MxBloc (' subject.category ' , ' loop ' );
}
$template ->MxBloc (' subject ' , ' loop ' );
}
|
|
lien : http://php.developpez.com/faq/tmp/langage/?page=securite#securite-failleXSS
lien : Comparatif : Découverte des principaux moteurs de template en PHP, par Guillaume Rossolini
|
Consultez les autres F.A.Q.
Les sources présentés sur cette page sont libres de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2011
Developpez LLC. Tous droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérêts.
Cette page est déposée à la SACD.
|