13.9.2 Layout::gen()

La méthode gen() permet de lancer la génération du template après avoir positionné les valeurs des balises à l'aide des méthodes set() et setBlockData().

13.9.2.1 Description

string gen ( void )

Le résultat est retourné sous la forme d'une chaîne de caractères.

13.9.2.1.1 Avertissements

Aucun.

13.9.2.2 Liste des paramètres

Aucun.

13.9.2.3 Valeur de retour

La méthode retourne une chaîne de caractère contenant le résultat de l'évaluation du template.

13.9.2.4 Erreurs / Exceptions

Aucune.

13.9.2.5 Historique

Aucun.

13.9.2.6 Exemples

  • Exemple #1

Dans cet exemple, on va utiliser le mécanisme de template pour générer dynamiquement des balises de blocs [BLOCK XXX]...[ENDBLOCK XXX].

Fichier de template MOVIES/Layout/movies.xml :

<ul>
[BLOCK MOVIES]
<li>
        <p><span class="movie_title">[MOVIE_TITLE]</span> (<span class="movie_date">[MOVIE_DATE]</span>)</p>
        <p>Characters:
        <ul>[BLOCK [CHARACTERS]]
                <li>[CHARACTER]</li>[ENDBLOCK [CHARACTERS]]
        </ul>
        </p>
</li>
[ENDBLOCK MOVIES]
</ul>
EOF;

Contrôleur :

$layout = new Layout("MOVIES/Layout/movies.xml");
 
$layout->setBlockData(
    'MOVIES',
    array(
        array(
            'MOVIE_TITLE' => htmlspecialchars('Star Wars: A New Hope'),
            'MOVIE_DATE'  => '1977',
            'CHARACTERS' => 'CHARACTERS_SW_A_NEW_HOPE'
        ),
        array(
            'MOVIE_TITLE' => htmlspecialchars('Star Wars: The Empire Strikes Back'),
            'MOVIE_DATE'  => '1980',
            'CHARACTERS' => 'CHARACTERS_SW_THE_EMPIRE_STRIKES_BACK'
        ),
        array(
            'MOVIE_TITLE' => htmlspecialchars('Star Wars: Return of the Jedi'),
            'MOVIE_DATE'  => '1983',
            'CHARACTERS' => 'CHARACTERS_SW_RETURN_OF_THE_JEDI'
        )
    )
);
 
$layout->setBlockData(
    'CHARACTERS_SW_A_NEW_HOPE',
    array(
        array(
            'CHARACTER' => 'Chewbacca'
        ),
        array(
            'CHARACTER' => 'Luke Skywalker'
        ),
        array(
            'CHARACTER' => 'Han Solo'
        )
    )
);
 
$layout->setBlockData(
    'CHARACTERS_SW_THE_EMPIRE_STRIKES_BACK',
    array(
        array(
            'CHARACTER' => 'Yoda'
        ),
        array(
            'CHARACTER' => 'Boba Fett'
        )
    )
);
$layout->setBlockData(
    'CHARACTERS_SW_RETURN_OF_THE_JEDI',
    array(
        array(
            'CHARACTER' => 'Emperor Palpatine'
        ),
        array(
            'CHARACTER' => 'Wicket'
        )
    )
);
 
print $layout->gen();

Le premier niveau de blocs [BLOCK MOVIES] va dupliquer les chaînes [BLOCK [CHARACTERS]] pour donner de nouveau blocs

  • [BLOCK CHARACTERS_SW_A_NEW_HOPE],
  • [BLOCK CHARACTERS_SW_THE_EMPIRE_STRIKES_BACK] et
  • [BLOCK CHARACTERS_SW_RETURN_OF_THE_JEDI.

Ensuite, ces blocs [BLOCK CHARACTERS_SW_xxx] sont évalués avec le contenu de leur setBlockData('CHARACTERS_SW_xxx') respectif.

Résultat :

<ul>
 
<li>
    <p><span class="movie_title">Star Wars: A New Hope</span> (<span class="movie_date">1977</span>)</p>
    <p>Characters:
    <ul>
            <li>Chewbacca</li>
            <li>Luke Skywalker</li>
            <li>Han Solo</li>
    </ul>
    </p>
</li>
 
<li>
    <p><span class="movie_title">Star Wars: The Empire Strikes Back</span> (<span class="movie_date">1980</span>)</p>
    <p>Characters:
    <ul>
            <li>Yoda</li>
            <li>Boba Fett</li>
    </ul>
    </p>
</li>
 
<li>
    <p><span class="movie_title">Star Wars: Return of the Jedi</span> (<span class="movie_date">1983</span>)</p>
    <p>Characters:
    <ul>
            <li>Emperor Palpatine</li>
            <li>Wicket</li>
    </ul>
    </p>
</li>
 
</ul>

13.9.2.7 Notes

L'expansion des balises est faite dans l'ordre suivant :

  1. balise de bloc (e.g. [BLOCK xxx]...[ENDBLOCK xxx]) ;
  2. balise conditionnelle (e.g. [IF xxx]...[ENDIF xxx], [IFNOT xxx]...[ENDIF xxx]) ;
  3. balise d'internationalisation de texte (e.g. [TEXT:xxx]) ;
  4. balise de clef atomique (e.g. [xxx]) définie via les méthodes eSet() ou set() ;
  5. balise de paramètre applicatif (si $action présent dans le constructeur).
  6. balise de référence d'image (e.g. [IMG:xxx]) ;
  7. balise de zone (e.g. [ZONE xxx]) ;
  8. balise de référence ou de code JavaScript (e.g. [JS:REF], [JS:CODE]) ;
  9. balise de référence ou de code CSS (e.g [CSS:REF], [CSS:CODE]).

13.9.2.8 Voir aussi

×