Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Foreach w systemie szablonów
infoo1
post 12.12.2008, 21:39:30
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 12.11.2008

Ostrzeżenie: (0%)
-----


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)...

Ten post edytował infoo1 12.12.2008, 23:14:12
Go to the top of the page
+Quote Post
SirZooro
post 13.12.2008, 10:11:34
Post #2





Grupa: Zarejestrowani
Postów: 243
Pomógł: 32
Dołączył: 14.06.2007

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 15:43