login  Naam:   Wachtwoord: 
Registreer je!
 Forum

templateparser assign..

Offline timo - 24/05/2006 14:37
Avatar van timoPHP ver gevorderde hier ben ik weer met mijn templateparser, ik weet nu waar de fout wss zit, hij kan opzich best meerdere blocks en alles aan na een paar aanpassingen van mij waarvan ik niet een begrijp waarom die nodig waren. maar als ik iets wil assignen, en dat meerdere keren probeer te doen (dus bv een block waarin iets vaker voorkomt wat steeds anders moet zijn) zet hij gewoon alles achter elkaar, hier mijn assign functie:
  1. <?
  2. function assign($placeholders,$replacements)
  3. {
  4. if(is_array($placeholders) && is_array($replacements))
  5. {
  6. foreach($palceholders AS $curr)
  7. {
  8. $this->placeholders = $curr;
  9. }
  10. foreach($replacements AS $curr)
  11. {
  12. $this->replacements = $curr;
  13. }
  14. }
  15. else
  16. {
  17. $this->placeholders = $placeholders;
  18. $this->replacements = $replacements;
  19. }
  20. $this->output = preg_replace(
  21. '~{'.$this->placeholders.'}~si',
  22. $this->replacements.'{'.$this->placeholders.'}',
  23. $this->block
  24. );
  25. $this->resetblock();
  26. }

6 antwoorden

Gesponsorde links
Offline b4nkr0bz0r - 24/05/2006 15:34
Avatar van b4nkr0bz0r PHP gevorderde
  1. $this->placeholders = $placeholders;
  2. $this->replacements = $replacements;


moet dat niet:
  1. $this->placeholders[] = $placeholders;
  2. $this->replacements[] = $replacements;

zijn ?

verder begrijp ik je vraag niet echt, kan je het mischien verrduidelijken dmv een voorbeeld ofzo ? of je vraag beter toelichten?
Offline timo - 24/05/2006 19:30
Avatar van timo PHP ver gevorderde hmm... lost het probleem niet op, het probleem is dat als ik bv een block heb wat allemaal verschillende leden moet laten zien, en ik wil die leden placeholders vervangen (assign dus gewoon)
dan krijg ik best die blocks in de hoeveelheid die ik wou, maar alle waardes komen steeds achter elkaar te staan met dezelfde waarde...
Offline kokx - 24/05/2006 19:41 (laatste wijziging 24/05/2006 19:43)
Avatar van kokx Onbekend LOL.
  1. foreach($palceholders AS $curr)
  2. {
  3. $this->placeholders = $curr;
  4. }
  5. foreach($replacements AS $curr)
  6. {
  7. $this->replacements = $curr;
  8. }

Ik denk dat hier de fout zit. Er moeten natuurlijk meerdere placeholders en replacements kunnen zijn. Maar als je nu die array functie gebruikt, komt daar alleen het laatste element in.

Edit: Ik denk dat het dit moet zijn:
  1. foreach($palceholders AS $curr)
  2. {
  3. $this->placeholders[] = $curr;
  4. }
  5. foreach($replacements AS $curr)
  6. {
  7. $this->replacements[] = $curr;
  8. }
Offline timo - 24/05/2006 19:43 (laatste wijziging 24/05/2006 19:44)
Avatar van timo PHP ver gevorderde ik heb nu dit:
  1. <?php
  2. function assign($placeholders,$replacements)
  3. {
  4. if(is_array($placeholders) && is_array($replacements))
  5. {
  6. foreach($palceholders AS $curr)
  7. {
  8. $this->placeholders[] = $curr;
  9. }
  10. foreach($replacements AS $curr)
  11. {
  12. $this->replacements[] = $curr;
  13. }
  14. }
  15. else
  16. {
  17. $this->placeholders[] = $placeholders;
  18. $this->replacements[] = $replacements;
  19. }
  20. for($i=0;$i<count($this->placeholders); $i++)
  21. {
  22. $this->output = preg_replace('~{'.$this->placeholders[$i].'}~si',$this->replacements[$i].'{'.$this->placeholders[$i].'}',$this->block);
  23. }
  24. $this->resetblock();
  25. }
  26. ?>

btw: @kokx, lees even de 1e reactie dan zie je dat dat al gezegd was^^:p
Offline kokx - 24/05/2006 19:44 (laatste wijziging 24/05/2006 19:45)
Avatar van kokx Onbekend En werkt het of niet? Ik denk wel dat het zo moet ja.

Edit: @timo: Ik heb niet gedacht dat jij dat ook zo zou opnemen.
Offline timo - 24/05/2006 19:51 (laatste wijziging 28/05/2006 17:28)
Avatar van timo PHP ver gevorderde ik zet anders wel ff alles online:
test.php: http://plaatscode.be/372/
class.TemplateParser.inc.php: http://plaatscode.be/373/
test.tpl:
  1. {test}{test2}<div align="center">
  2. <!-- START BLOCK : blockje -->
  3. <p>{blaat}<textarea>hej!</textarea></p>
  4. <!-- END BLOCK : blockje --></div>
  5. {test3}

output: (html ervan:)
  1. <div align="center">
  2.  
  3. <p>hoi!hoi!<textarea>hej!</textarea></p>
  4.  
  5. <p>hoi!hoi!<textarea>hej!</textarea></p>
  6. </div>

niemand?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.268s