Premier et dernier éléments dans la liste à l'aide RecursiveIteratorIterator
-
13-10-2019 - |
Question
J'utilise RecursiveIteratorIterator
à boucle sur Zend_Navigation
, qui est essentiellement une liste des balises <ul>
et <li>
imbriqués:
$iterator = new RecursiveIteratorIterator(
$container,
RecursiveIteratorIterator::CHILD_FIRST
);
foreach ($iterator as $page) {
...
// isLast()?
// isFirst()?
}
Comment déterminer, si est le premier ou le dernier élément sur le niveau actuel? L'élément actuellement itéré (de $page
)
Je dois ajouter l'attribut class first
et de last
à ces éléments.
La solution
Vous pouvez utiliser getDepth () pour interroger la profondeur de la étiquette. Lorsque la profondeur augmente, vous êtes à un nouveau niveau et devrait ajouter un attribut first
. Lorsque la profondeur diminue entre les balises, qui vous indique la balise précédente a été le dernier à son niveau et vous devez ajouter un attribut last
à lui. Cela signifie que vous devrez lire la balise suivante avant de pouvoir terminer le traitement de la balise courante.