Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: System szablonów - instrukcje warunkowe
Forum PHP.pl > Forum > PHP
Ziels
Piszę właśnie system szablonów, ostatnio potrzebne okazały się instrukcje, np w szablonie wpisuję

Kod
<div>
{if($_GET[zmienna] == 1):
treść
(else):
inna treść
}
</div>


Problem w tym, że nie mam pojęcia jak to zrobić. O ile samo '==' nie jest problemem, o tyle chodzi mi o wszystkie operatory, i możliwości wstawiania zmiennych z tablic z dowolnego poziomu zagnieżdżenia. Ktoś może spotkał się z czymś podobnym i wie jak ten problem rozwiązać?
Cysiaczek
Jako, że jestem "nieprzekonany" do systemów a'la Smarty, więc zapytam tak:
Po co robisz to co robisz? Czy to Ci coś ułatwia? Czy nie lepiej jest zostawić odrobinę kodu php? Przecież Twoje pytanie to wołanie w stylu "Pisze własny mini-język - help".

Mały przykład z php.

  1. <?php if ($jakastam){ ?>
  2. tresc w (x)htmlu
  3. <?php } else { ?>
  4. alternatywna tresc
  5.  
  6. <?php } ?>
ikioloak
Po 2 latach uzywania smarty, jestem sklonny zgodzic sie z Cysiaczkiem. Pisanie minijezyka jest chyba nietrafione. Cysiaczek akurat dal kiepski przyklad - jesli pisac szablony w php, to najlepiej za pomoca składni alternatywnej:
Kod
<? if ($zmienna == 'val): ?>
        <div>kod html</div>
<? endif; ?>

Jest to rozwiazanie z powodzeniem stosowane w Symfony i Code Igniter (i w pewnie jeszcze kilku). System 'szablonow' oparty o takie rozwiazanie jest bardzo latwy do napisania, lub mozna skorzystac z Savanta.
krowal
A ja tam smarty lubię i nie narzekam, chociaż nie mam tylu postów co Wy to może się nie znam winksmiley.jpg

a co do problemu to chyba powinno wyglądać tak:

  1. <?php
  2. <div>
  3. {if $_GET.zmienna == 1}
  4. treść
  5. {else}
  6. inna treść
  7. {/if}
  8. </div>
  9. ?>

zakładając że zrobiłeś takie przypisanie w kodzie php
$smarty_object->assign('_GET', $_GET);

pozdrawiam
sf
jest już coś takiego jak {$smarty.get.zmienna} tongue.gif

http://smarty.php.net/manual/en/language.v...rty.request.php
kszychu
Panowie, nie odbiegajmy od tematu. Człowiek ma problem a Wy mu swoje poglądy na temat smarty będziecie wykładać, podczas gdy on słowem o smarty nie wspomniał.
Proszę wrócić do tematu bo przestanę być miły.
Ziels
Otóż robie totalne rozgraniczenie na warstwy program i szablon

Myślę że np style należą do szablonu więc w plikach php nie mam zamiaru nic robić, a pliki z szablonem są w formacie .tpl (więc raz że rozszerzenie nie pasuje, a dwa że nie są includowane tylko fread'owane). Ktoś ma pomysł? Teoretycznie mógłbym to zrobić przy 'wymuszeniu' spacji w warunku i uzyć explode, ale nie chcę niczego wymuszać, tzn żeby działało zarówno w sposób
Kod
{if($_GET[zmienna] == 1):

jak i
Kod
{if($_GET[zmienna]==1):


Jakieś sugestie, pomysły? winksmiley.jpg
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.