ugrás a tartalomhoz

Tömb létrehozás, feltöltés Smarty-val

Anonymous · 2006. Okt. 18. (Sze), 09.44
Sziasztok.

Programoztam korábban egy oldalt, amelyet most épp átdolgozok, hogy a spagettikódot felszámoljam és különválasszam a php-t és a hmtl-t. Ehhez kérnék most egy kis segítséget.


Ennél az oldalnál volt egy ellenőrzés a regisztráció során megadott adatokra, amely kb. így nézett ki:
  1. ...  
  2. // Ellenőrizzük le, hogy a jelszó mező üres vagy sem  
  3.     $check->construct($_POST['password']);  
  4.     if (!$check->empty_check()) {$error['password'] = "A 'Jelszó' és a 'Jelszó ismét' mezők kitöltése kötelező.";}  
  5. ...  
Ezután szépen ki tudtam jelezni, hogyha valami hiba történt.

Most, hogy átállok Smarty-ra, valahogy így néz ki a dolog
  1. ...  
  2. /// Ellenőrizzük le, hogy a felhasználó név üres vagy sem, és  hogy létezik-e már ezen a néven regisztrált felhasználó  
  3.     $check->construct($_POST['username']);  
  4.     if (!$check->empty_check()) { $smarty->assign('error'array('username' => 'A regisztrációhoz válassz egy felhasználói nevet magadnak.')); }  
  5.     if (!$check->isFreeUser()) { $smarty->assign('error'array('username' => 'Az általad megadott felhasználói név foglalt. Kérünk válassz másikat.'));  }  
  6. ...  
A problémám a következő, ha szépen végig ellenőrzöm az adatokat, mindig csak az utolsó ellenőrzés eredményét érem el.
Pl.:
  1. <div class='lines'>  
  2.     {if isset($error.name)}<div class="errors">{$error.name}</div>{/if}  
  3.     <span class='labelname'><label for='name'><strong>Teljes név:</strong></label></span>  
  4.     <span class='inputelements'><input type='text' name='name' id='name' value='{$name}' /></span>  
  5. </div>  
  6.   
  7. <div class='lines'>  
  8.     {if isset($error.email)}<div class="errors">{$error.email}</div>{/if}  
  9.     <span class='labelname'><label for='email'><strong>E-mail:</strong></label></span>  
  10.     <span class='inputelements'><input type='text' name='email' id='email' value='{$email}' /></span>  
  11. </div>  
Ui.: Nem másoltam be a teljes forráskódot, aki segíteni tud, annak nyilván ez is elég, hogy megértse. Remélem, hogy érthetően fogalmaztam meg a problémámat.
 
1

feltöltés Smarty-val

Anonymous · 2006. Okt. 18. (Sze), 10.43
  1. if (!$check->empty_check()) { $smarty->assign('error'array('username' => 'A regisztrációhoz válassz egy felhasználói nevet magadnak.')); }  
  2. if (!$check->isFreeUser()) { $smarty->assign('error'array('username' => 'Az általad megadott felhasználói név foglalt. Kérünk válassz másikat.'));  }  
Itt mindig felülírod az error.username-t, nem?

Gyulus
2

tömb deklarálása

Anonymous · 2006. Okt. 18. (Sze), 10.44
Szia!
Az a gond itt, hogy minden egyes assign-nál egy új tömböt dobsz bele a smartyba, ami felül fogja írni az előzőt, ezért létod csak az utolsót.
Gyüjtsd tömbbe a hibakódokat, és a végén, a smarty display elött egyben add át.
  1. $err['username'] = "hiba1";  
  2. ...  
  3. $err['email'] = "hiba2";  
  4. ...  
  5. $smarty->assign('error'$err);  
  6. $smary->display(..);  
Igy smartyban tudsz már rá hivatkozni, ill. foreach ciklussal végigmenni rajta.


Krisz
3

Köszönöm

Anonymous · 2006. Okt. 18. (Sze), 11.52
Köszönöm mindkettőtöknek, ez volt a gond. Hiába, még szokni kell... :)
Amúgy meg javaslom mindenkinek a Smarty-t, engem lenyügözött. :)