Accueil
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence
logo
Sommaire > Templates > ModeliXe
        Qu'est-ce que ModeliXe ?
        Comment installer ModeliXe ?
        Comment instancier ModeliXe ?
        PHP me donne des erreurs lorsque j'utilise ModeliXe
        Quelle est la syntaxe d'un gabarit ModeliXe ?
        Comment envoyer une variable au template avec ModeliXe ?
        Comment répéter un bloc du gabarit avec ModeliXe ?
        Comment placer un bloc dans un autre (imbrication) avec ModeliXe ?



Qu'est-ce que ModeliXe ?
auteur : Guillaume Rossolini
fr ModeliXe est un moteur de templates écrit en PHP.

ModeliXe est un projet français qui a été transmis à Florian Perrichot. La liste des contributeurs est longue et j'y ai retrouvé des noms que je connaissais : Sébastien Hordeaux (créateur de Waterpoof/PHPEdit) et Frédéric Bouchery (ancien bloggueur aux billets intéressants).

Aujourd'hui, l'ancienne page existe mais elle n'est plus maintenue. Le site officiel, quoi qu'en dise Google.com, est désormais hébergé sur fr le site personel de Florian.

lien : faq Qu'est-ce qu'un template ?
lien : faq Quel est le principe de fonctionnement d'un template ?
lien : faq Quels sont les principaux systèmes de template ?
lien : fr Comparatif : Découverte des principaux moteurs de template en PHP, par Guillaume Rossolini

Comment installer ModeliXe ?
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 :
ModeliXe.php
define('MX_GENERAL_PATH', realpath(dirname(__FILE__)).'/');
lien : fr Doc officielle : Mise en place et paramétrage

Comment instancier ModeliXe ?
auteur : Guillaume Rossolini
Le code suivant permet de déclarer un objet ModeliXe :
$page = new ModeliXe('templates/index.tpl');

PHP me donne des erreurs lorsque j'utilise ModeliXe
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() :
ereg('http://', $url)
Remplacer par :
preg_match('`http://`', $url)

Quelle est la syntaxe d'un gabarit ModeliXe ?
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"}

Comment envoyer une variable au template avec ModeliXe ?
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 : faq http://php.developpez.com/faq/tmp/langage/?page=securite#securite-failleXSS

Comment répéter un bloc du gabarit avec ModeliXe ?
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 : faq http://php.developpez.com/faq/tmp/langage/?page=securite#securite-failleXSS

Comment placer un bloc dans un autre (imbrication) avec ModeliXe ?
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 : faq http://php.developpez.com/faq/tmp/langage/?page=securite#securite-failleXSS
lien : fr 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.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com