Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Smarty]Jak oddzielic tekst od kodu...
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy szablonów
iMax
Witam, 2 dzien bawie sie ze Smartami. Chce go zastosowac w CMSie, a stanalem w pewnym momecie i nie mam pojecia jak sie z tym uporac.
A wiec mam plik rejestracja.php, ktorego uklad i czesc graficzna znajduja sie w templates o nazwie rejestracja.tpl, ale cala czesc tekstowa, wszystkie komunikaty, bledy itp chcialem trzymac w jednym pliku tpl.
Do sprawdzenia formularza uzylem kilku konstrukcji if, gdzie wszelkie bledy sa przechowywane w tablicy $error, a na koncu sa wyswietlane petla foreach. Jak nie stosowalem smartow to wszystko hulalo. Smarty probowalem wcisnac zamiast gotowego tekstu za pomoca $smarty->assign w pliku php, a w tpl, ktory mial byc skladowiskiem calego tekstu strony uzylem if.. ifelse. Gdy za pomoca $smarty->assign podalem cala tablice nic sie nie pojawialo, a jak dalem sama zmienna $error dzialalo. Nie wiem co robic... Jak wy to oddzielacie?
nospor
Cytat
Gdy za pomoca $smarty->assign podalem cala tablice nic sie nie pojawialo, a jak dalem sama zmienna $error dzialalo. Nie wiem co robic... Jak wy to oddzielacie?
Pokaz kod jak przydzielasz i pokaz kod jak wyswietlasz.

Jak idziesz do lekarza to tez mowisz tylko "boli"? czy moze mowisz konkretnie gdzie boli?
iMax
  1. <?php
  2. //...
  3. $error= array();
  4. if(!check($username))
  5. {
  6. $error[] = 'error1'; // zeby te error1 w pliku tpl odpowiadalo komunikatowi
  7. }
  8.  
  9. if(!check($nickname))
  10. {
  11. $error[] = 'error2'; // tu tez itp...
  12. }
  13.  
  14. if(is_array($error)) 
  15. {
  16. echo'<b>Wystapily bledy:</b><br><br>';
  17. foreach($error as $err) {
  18. echo'<li>'.$err.'</li>';
  19. }
  20. //...
  21. ?>

Ok. Zamieszczam kawaleczek kodu.
nospor
no dobra, a gdzie kod szablonu? gdzie przypisujesz te tablice do szablonu?

Pozatym w szablonie tez nalezy uzyc skladni foreach. W czym problem?
iMax
  1. <?php
  2. {if $tablica_error eq "error1"}
  3. cos tam.....
  4.  
  5. {elseif tablica_error eq "error2"}
  6. cos tam2.....
  7.  
  8. {/if}
  9. ?>

No wlasnie ni wiem jak ja przypisac zeby bylo dobrze, probowalem $error[] = 'error1', a pozniej w petli foreach $smarty->assign('talica_error', $error); $smarty->display('txt.tpl');
phpion
Po stronie PHP:
  1. <?php
  2. $smarty->assign('talica_error', $error);
  3. ?>

Natomiast po stronie szablonu:
Kod
{foreach from=$tablica_error item=v}
{$v}
{/endforeach}
nospor
{/endforeach} ?
chyba {/foreach}

@iMax no przeciez pisalem ci ze masz uzyc foreach. W smarty miales zrobic dokladnie to samo co robiles w php. NIe wiem co cie naszlo z tymi ifami.
phpion
Faktycznie, sory tongue.gif i tak wolę zwykłe PHPowe "szablony" stąd omylanka winksmiley.jpg
iMax
Nie dziala x_X. Nie wiem jak wsadzic tekst w te $v i gdzie wsadzic w pliku php assign.
decha-design
A spróbuj tak:

plik *.php
  1. <?php
  2. $errors = array();
  3. if(!check($username)) {
  4. $errors[] = 'error1';
  5. }
  6.  
  7. if(!check($nickname)) {
  8. $errors[] = 'error2';
  9. }
  10.  
  11. if(!empty($errors)) {
  12. $smarty -> assign('errors', $errors);
  13. $smarty -> display('error.tpl');
  14. }
  15.  
  16. ?>


plik error.tpl
  1. {config_load file="configs/error.conf" section="Register"}
  2.  
  3. {foreach item=error from=$errors name=error}
  4. {$smarty.config.$error}<br /><br />
  5. {/foreach}


... powinno działać, lecz musisz utworzyć plik errors.conf w katalogu /configs/:
Cytat
[Register]
error1 = "jakiś tam tekst błędu 1"
error2 = "jakiś tam tekst błędu 2"


... chyba że teksty błędów będziesz dodawał do *.tpl spod pliku *.php, więc obejdzie się bez tego errosr.conf
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.