Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Oddzielenie PHP od HTML'a
Forum PHP.pl > Forum > Przedszkole
Kuziu
Witam ...
Wkońcu doszedłem do wniosku, że trzeba oddzielać php od HTML ... do tego czasu zbytnio mi to nie przeszkadzało ... jakoś się łapałem w kodzie ... ale ostatnio do niego długo nie zagladałem a teraz zaszła taka potrzeba ... i troche czasu straciłem na wyszukanie odpowiednich rzeczy.

Do rzeczy ... czytałem o Smarty ... ale na to się nie zdecyduję ... wolę raczej własny szablonik.

Chodzi tylko o podział php i TPL ... i teraz pojawia się problem.

Jak oddzielacie ten kod ?

Tak zupełnie ? że w plikach TPL nie ma żadnej komendy php'a ?
Czy tylko ograniczacie go do minimum /??/

np. mamy formularz z Logowaniem User'a i jeśli chciałbym zrobić że po wpisaniu złego hasła napis "Hasło:" będzie w innym kolorze ... żeby było widac co się źle wpisało ... albo jak się zostawi puste pole Login .... to by było ono na czerwono ...

Musiałbym w takim wypadku do pliku TPL dodac warunek php ... lub pisac klika oddzielnych plików TPL dla każdego rodzaju błędu ( to oczywiście jest bez sensu ) ... więc zacząłem z dodawaniem warunków w plikach TPL ... ale przez to wcale kod nie stał się bardziej przejrzysty niż php-HTML a wręcz moge powiedzieć że stał się jeszcze bardzej zagmatwany ....

Jak sobie z tym radzicie ?
dr_bonzo
W Smaty'm robisz to tak:

w .php ustawiasz zmienna np
  1. <?php
  2.  
  3. $smarty->assign( 'error', 2 ); // niepoprawne dane
  4.  
  5. ?>


a w .tpl

Kod
{if $error eq 0 }
ok
{elseif $error eq 1 }
...
{elseif $error eq 2 }
Niepoprawne dane
...
<formularz logowania>
...
{/if}
Kuziu
Cytat
Do rzeczy ... czytałem o Smarty ... ale na to się nie zdecyduję ... wolę raczej własny szablonik.
bela
to napisz obsługe ifów
awides
klasa obsługująca wypełnienie szablonów
  1. <?php
  2.  
  3. class Szablon {
  4. public $katalog; /* folder z szablonami np. /szablony/ */
  5. function wyswietl($plik) {
  6. $szablon = $this;
  7. error_reporting(E_NOTICE);
  8. include($this->katalog.$plik);
  9. }
  10. }
  11. ?>


przykladowy szablon: (awides.tpl)
  1. <html>
  2. <title><? echo $szablon->title ?></title>
  3. </html>


wyświetlasz:
  1. <?php
  2.  
  3. $szablon = new Szablon;
  4. $szablon->katalog = '/szablony/';
  5. $szablon->title = 'awides :)';
  6. $szablon->wyswietl('awides.tpl');
  7. ?>


i to wszystko.
Kuziu
aha i teraz dzięki temu moge np. zrobić tak.

  1. <?php
  2.  
  3. $szablon = new Szablon;
  4. $szablon->katalog = '/szablony/';
  5. if($awides='dzieki'){
  6. $szablon->title = 'awides :)';
  7. }else{
  8. $szablon->title = 'Kuziu :)';
  9. }
  10. $szablon->wyswietl('awides.tpl');
  11. ?>


i mam warunek w kodzie php a w TPL zawsze jedną i tą samą zmienną.

Jesli dobrze rozumuje to wielkie dzięki.
awides
Możesz dodać konstruktor żeby jeszcze bardziej uprościć kod:
  1. <?php
  2.  
  3. class Szablon {
  4. public $katalog; /* folder z szablonami np. /szablony/ */
  5.  
  6. public function __construct() {
  7. $this->katalog = '/szablony/';
  8. }
  9.  
  10. function wyswietl($plik) {
  11. $szablon = $this;
  12. error_reporting(E_NOTICE);
  13. include($this->katalog.$plik);
  14. }
  15. }
  16. ?>


  1. <?php
  2. $szablon = new Szablon;
  3. /* $szablon->katalog = '/szablony/'; -> linijka mniej :) */
  4. $szablon->title = 'awides :)';
  5. $szablon->wyswietl('awides.tpl');
  6. ?>
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.