Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: System szablonów
Forum PHP.pl > Forum > PHP
KoPcIu
Witam, ostatnio znalazłem w sieci system szablonów pisany Obiektowo, zaciekawił mnie ten kod a więc od razu zacząłem pisać na nim stronę, wszystko szło dobrze do pewnego czasu. Gdy chciałem skorzystać z pętli while, po prostu nie wiem gdzie w takim systemie zastosować pętle.

Tutaj jest link do szablonu:
http://eazu.pl/index.php/bardzo-prosty-system-szablonow/

Ma ktoś jakiś pomysł jak zastosować pętlę?

Pozdrawiam winksmiley.jpg
cojack
masz tam przykład foreach, zrób tak samo z while: http://pl.php.net/manual/en/control-structures.while.php
KoPcIu
cojack, do tego czasu stosuję taki sposób. Lecz napisałem ten post z myślą że będzie można jakoś kod PHP wstawić do pliku PHP a nie PHTML winksmiley.jpg

Po prostu mam teraz dość obszerny system newsów i gdybym wykorzystał Twoją propozycję plik z HTML zmienił by się na PHP biggrin.gif
R4D3K
Ciekawa klasa ja też używam własnego systemu szablonów, bazującego na pcre.
Piszę bo mam jedno zastrzeżenie:
Cytat
Gdy chciałem skorzystać z pętli while, po prostu nie wiem gdzie w takim systemie zastosować pętle.


Moja odpowiedz na pewno nie w szablonie !
System szablonów w swoim założeniu ma oddzielać kod php od HTML tak, żeby sam szablon był zwykłym HTMLem z jakimiś w miarę prostymi znacznikami które podstawiają zmienne. Jeśli zaczniesz tam wstawiać while,for może jeszcze if to zastanów się co otrzymasz ? Kod HTMla z pseudo językiem szablonów.
Ja u siebie robię pojedyncze znaczniki typu :
* wstawienie zmiennej
* wstawienie podszablonu
* wyświetlanie komponentów, które według mojego projektu opakowują dane z bazy danych w kod HTML, czy inne dane które trzeba listować
* instrukcja warunkowa która w zależności od warunków wyświetla kod HTML bądź nie

Zastosowałem go w kliku w projektach i powiem szczerze oprócz wyżej wymienionych nie musiałem nic więcej w systemie szablonów stosować
Crozin
Cytat
System szablonów w swoim założeniu ma oddzielać kod php od HTML tak, żeby sam szablon był zwykłym HTMLem z jakimiś w miarę prostymi znacznikami które podstawiają zmienne.
Co za bzdura... szablon ma oddzielić logikę aplikacji od jej prezentacji.

I powiedz mi jakim cudem wyświetlasz np. listę postów bez pętli? 20 razy powtarzasz to samo?
R4D3K
Cytat
I powiedz mi jakim cudem wyświetlasz np. listę postów bez pętli? 20 razy powtarzasz to samo?

Oczywiście, że korzystam z pętli, tylko nie zamieszczam jej w szablonie co najwyżej jakiś tag informujący parser szablonu, że należy wstawić te 20 postów, zresztą napisałem to:
Cytat
wyświetlanie komponentów, które według mojego projektu opakowują dane z bazy danych w kod HTML, czy inne dane które trzeba listować


Crozin a czym w aplikacjach internetowych PHP jest rozdzielenie logiki biznesowej od prezentacji ? Nie będę tutaj się zbytnio rozpisywał bo o tym czytałem całą masę tematów, ale nie wiem czy wógle 1 posta przeczytałeś, otworzyłeś 1 linka, który autor tematu podał czy ciężko Ci było:
Cytat
(...) Mieszają oni kod PHP z kodem (x)HTML w taki sposób, że jeżeli ktoś chce coś zmienić w wyglądzie, wymaga to wielkiego skupienia i dużego nakładu pracy, gdyż np. kod (x)HTML jest porozbijany na części, pomiędzy którymi odstęp wynosi nawet kilkaset linii. Spróbuję dzisiaj Wam zaprezentować bardzo prosty sposób, w jaki można to uprościć (...)


A oto jak wygląda przykładowy szablon, według Eazu, autora tego systemu szablonów
  1. <h2>Nagłówek drugiego stopnia</h2>
  2. <p>Działa? <?php echo self::$zmienne['dziala'] ?></p>


Teraz autor tematu napisał, może nie przeczytałeś to Ci wkleję:
Cytat
Gdy chciałem skorzystać z pętli while, po prostu nie wiem gdzie w takim systemie zastosować pętle.


I jak rozumiem według Ciebie powinno to być w tym kodzie szablonu, tak ?
phpion
Cytat(R4D3K @ 7.07.2009, 12:17:13 ) *
A oto jak wygląda przykładowy szablon, według Eazu, autora tego systemu szablonów
  1. <h2>Nagłówek drugiego stopnia</h2>
  2. <p>Działa? <?php echo self::$zmienne['dziala'] ?></p>


Teraz autor tematu napisał, może nie przeczytałeś to Ci wkleję:
I jak rozumiem według Ciebie powinno to być w tym kodzie szablonu, tak ?

A gdzie? Czy dodając jakiś pseudoznacznik {petla} i pomiędzy nim ten kod poczujesz się lepiej? Jeżeli uważasz, że dodanie pętli do tego kodu jest takie 'be' to zobacz sobie jak prezentowane są systemy widoków w popularnych frameworkach (Symfony, ZF, Kohana). Dla mnie osobiście systemy szablonów typu Smarty to porażka. Zdecydowanie bardziej wolę szablony "wbudowane" w PHP czyli przechodzenie z trybu HTML w PHP i odwrotnie.
KoPcIu
R4D3K, chyba mnie nie zrozumiałeś tak samo jak cojack winksmiley.jpg

Chcę pobranie danych z bazy i pętle wstawić w plik PHP a wyświetlić te dane w pliku PHTML.

Cytat
Oczywiście, że korzystam z pętli, tylko nie zamieszczam jej w szablonie co najwyżej jakiś tag informujący parser szablonu, że należy wstawić te 20 postów, zresztą napisałem to:


Można prosić o jakiś przykład?
golaod
  1. <?php
  2. for( $i = 0; $i < count($dane); $i++ ) {
  3.  $data = & $dane[$i];
  4.  include 'widok.phtml';
  5. }
  6. ?>
Crozin
@golaod: a o foreach" title="Zobacz w manualu PHP" target="_manual słyszałeś?
Pr0100
Cytat
cojack, do tego czasu stosuję taki sposób. Lecz napisałem ten post z myślą że będzie można jakoś kod PHP wstawić do pliku PHP a nie PHTML


jeżeli chcesz mieć coś w tym stylu: http://www.smarty.net/manual/en/language.f...ion.foreach.php to zapomnij. Twój system szablonów jest zbyt prosty smile.gif

Cytat
Dla mnie osobiście systemy szablonów typu Smarty to porażka


kwesta przyzwyczajenia, SMARTY są dobre do nauczenia się literek C i V ze wzorca MVC smile.gif

Cytat
czym w aplikacjach internetowych PHP jest rozdzielenie logiki biznesowej od prezentacji ?


to może być w widoku
  1. <?php if (warunek): ?>
  2.  warunek spełniony
  3. <?php else: ?>
  4.  warunek niespełniony
  5. <?php endif; ?>


to nie może być w widoku
  1. <?php if (warunek)
  2. {
  3.  $group = "Użytkownicy";
  4. } else {
  5.  $group = "Opiekunowie";
  6. }
  7. ?>


Cytat
Nie będę tutaj się zbytnio rozpisywał bo o tym czytałem całą masę tematów


cała masa to pojęcie względne niemniej jednak wydaje mi się że słowo troszeczkę by tu bardziej pasowało winksmiley.jpg
R4D3K
~phpion wiedz, że wstawianie psedudoznaczników do kodu i ich parsowanie jest nie odczuwalne, nawet przez Smartego (które też nie lubię i nie stosuje). Nie zamierzam się kłócić co jest wygodniejsze bo to kwestia gustu czy czysty php czy jakiś pseudojęzyk.
Moim zdaniem pomysł szablonów jest jak najbardziej ok, wiadomo Smarty ze znacznikami przesadza, dlatego jak już wyżej napisał stosuję własny system szablonów, który ogranicza się do 4 rodzajów znaczników. Dlaczego tylko tyle ? No bo po co więcej ? Albo tyle mi wystarcza.
Dzięki takim pseudoselektoram kod zyskuje na przejrzystości => dla mnie lepiej wygląda niż "czysty php". I przedwszystkim nie klepie tych samych foreachow itp rzeczy.
erix
~golaod, nie dość, że nieoptymalne (count" title="Zobacz w manualu PHP" target="_manual przy każdej iteracji), to można wszystko zrealizować przez extract" title="Zobacz w manualu PHP" target="_manual z jednym dodatkowym parametrem. tongue.gif
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.