2010-11-18 4 views
1

Je construis un framework très léger et je voudrais un analyseur de gabarit personnalisé. Je connais bien sûr d'autres solutions telles que Smarty, mais c'est beaucoup trop pour ce dont j'ai besoin.Implémenter la boucle dans l'analyseur de gabarit

J'ai déjà construit des analyseurs de modèles simples mais je n'ai jamais compris comment utiliser les boucles. Je pense à l'idée des boucles foreach de Smarty, ou peut-être aux blocs de phpBB. Malheureusement, je n'ai pas vraiment le temps de tester ces applications, alors quel est le moyen le plus simple d'implémenter des boucles dans un analyseur de modèles?

Il doit également être capable de gérer des tableaux multidimensionnels.

+1

Essayez-le d'abord, puis demandez quand vous êtes bloqué - avec des exemples. Sinon, payez quelqu'un pour le faire pour vous. – enobrev

+0

Je ne cherche qu'une poussée dans la bonne direction. Je ne sais pas vraiment quoi essayer d'abord, pour être honnête. J'ai fait du googleing mais je ne trouve pas vraiment d'exemples. – Scott

Répondre

0

aller pour phpkerby Je pense que ce serait la solution à votre problème

PHP KIRBY

0

Voici l'idée générale de la façon de le faire ...

Vous devez configurer vos paramètres de début et de fin de boucle. Donc, quelque chose comme:

{LOOP_START:users} 
    <p>{name}</p> 
{LOOP_END:users} 

Puis dans votre code de modèle, vous voulez saisir l'espace réservé boucle {LOOP_START:users}-{LOOP_END:users}. Vous voulez également prendre un extrait de tout entre ces balises. Parcourez votre tableau et remplacez les vars dans l'extrait, puis remplacez l'espace réservé complet par votre nouvelle sortie. Voici l'idée de base:

$output = your_method_to_get_the_full_template_contents(); 
$loop_with_tags = your_method_to_find_the_loop_tags_and_content($output, 'users'); 
$loop_inside_tags = your_method_to_get_the_loop_contents($loop_with_tags); 

$loop_output = ''; 
foreach($users as $user) { 
    $loop_output .= str_replace(array_keys($user), array_values($user), $loop_inside_tags); 
} 

$output = str_replace($loop_with_tags, $loop_output, $output); 
Questions connexes