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:

...
// Ellenőrizzük le, hogy a jelszó mező üres vagy sem
	$check->construct($_POST['password']);
	if (!$check->empty_check()) {$error['password'] = "A 'Jelszó' és a 'Jelszó ismét' mezők kitöltése kötelező.";}
...
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

...
/// 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ó
	$check->construct($_POST['username']);
	if (!$check->empty_check()) { $smarty->assign('error', array('username' => 'A regisztrációhoz válassz egy felhasználói nevet magadnak.')); }
	if (!$check->isFreeUser()) { $smarty->assign('error', array('username' => 'Az általad megadott felhasználói név foglalt. Kérünk válassz másikat.'));  }
...
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.:

<div class='lines'>
	{if isset($error.name)}<div class="errors">{$error.name}</div>{/if}
	<span class='labelname'><label for='name'><strong>Teljes név:</strong></label></span>
	<span class='inputelements'><input type='text' name='name' id='name' value='{$name}' /></span>
</div>

<div class='lines'>
	{if isset($error.email)}<div class="errors">{$error.email}</div>{/if}
	<span class='labelname'><label for='email'><strong>E-mail:</strong></label></span>
	<span class='inputelements'><input type='text' name='email' id='email' value='{$email}' /></span>
</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
if (!$check->empty_check()) { $smarty->assign('error', array('username' => 'A regisztrációhoz válassz egy felhasználói nevet magadnak.')); }
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.
$err['username'] = "hiba1";
...
$err['email'] = "hiba2";
...
$smarty->assign('error', $err);
$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. :)