Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Foreach w systemie szablonów
Forum PHP.pl > Forum > PHP
infoo1
Jak zrobić foreach w systemie szablonów? Składania:
Kod
<!-- FOREACH template -->
           <li><a href="{template.href}">{template.anchor}</a></li>
         <!-- END_FOREACH -->

  1. <?php
  2.  $template->assign_foreach(array(
  3.    array('href'   => 'adres', 'anchor' => 'nazwa'),
  4.    array('href'   => 'adres2','anchor' => 'nazwa2'),
  5.    array('href'   => 'adres3','anchor' => 'nazwa3'),
  6.    array('href'   => 'adres4','anchor' => 'nazwa4')
  7.  ));
  8. ?>
Ma wyświetlić:
Kod
  <li><a href="adres">nazwa</a></li>
           <li><a href="adres2">nazwa2</a></li>
           <li><a href="adres3">nazwa3</a></li>
           <li><a href="adres4">nazwa4</a></li>
Mój obecny kod:
  1. <?php
  2.    function assign_foreach($arr)
  3.      {
  4.        $file = $this->tplDir.'/'.$this->html.$this->tplEx;
  5.        $cnt = file_get_contents($file);
  6.        $pattern  = '/<!-- FOREACH (.*?) -->(.*?)<!-- END_FOREACH -->/';
  7.        $replace  = '<?php foreach (${1} as $value)${2)} ?>';
  8.        $replaced = preg_replace($pattern,$replace,$cnt);
  9.      file_put_contents($this->cache_dir.'/'.$html.$this->tplEx.'.php',$replaced);
  10.      }
  11. ?>
Oczywiście połowa do wyrzucenia (zmiana na inny kod)...
SirZooro
Użyj funkcji preg_replace_callback. W funkcji którą podasz jako drugi parametr wstawisz zamiast $1 i $3 foreach (...) { ... }. $2 natomiast musisz dodatkowo przetworzyć, aby wstawić tam kod odpowiedzialny za pobieranie wartości z tablicy. Tak przetworzony string wstaw pomiędzy nawiasy klamrowe.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.