assign_block(string name,
array vars
)
assign_block() va déclarer un block avec comme nom,
name et comme variables, le tableau
vars.
Il est préférable d'utiliser
assign_block() à
assign() quand on ne sait pas le nombre de lignes qui vont être retournés, lors d'une requête SQL ou d'une boucle par exemple.
Note :
Depuis la version 2.0, il est possible d'utiliser les blocks au deuxième niveau.
Depuis la version 3.1, il est possible d'utiliser les blocks au troisième niveau.
Depuis la version 3.2, il n'y a plus de limite de niveau.
Depuis la version 3.3, il n'y a plus de problème avec les variables de même base.
Exemple 1 :
<?php
...
for($i=
1;
$i<=
10; ++
$i) //lors d'une boucle
{
$tpl->
assign_block('boucle_for',
array('numéro' =>
$i));
}
...
?>
Exemple 2 :
<?php
...
$req =
mysql_query('SELECT * FROM membres');
//lors d'une requête SQL
while($data =
mysql_fetch_array($req))
{
$tpl->
assign_block('list_membres',
array('pseudo' =>
$data['pseudo'],
'prenom' =>
$data['prenom'],
'nom' =>
$data['nom']));
}
...
?>
Exemple 3 :
Lorsqu'il y a des sous-blocks, le block parent et le sous-block sont séparés par un points lors de l'assignation et dans le fichier template
(depuis la 2ème version).
<?php
...
for($i=
1;
$i<=
10; ++
$i) //lors d'une boucle
{
$tpl->
assign_block('block',
array('titre' =>
$i));
for($j=
1;
$j<=
10; ++
$j) //lors d'une sous boucle
{
$tpl->
assign_block('block.sous_block',
array('numero' =>
$i.
$j));
}
}
...
?> <!-- BEGIN block -->
<h3>Titre {$titre}</h3>
<ul>
<!-- BEGIN block.sous_block -->
<li>{$numero}</li>
<!-- END block.sous_block -->
<ul>
<!-- END block -->
Voir aussi la fonction
assign() et les balises
BEGIN block,
END block et
{$var}.