Ako neodoslať overovacie heslo

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
markoph
Člen | 3
+
0
-

Ahoj,

začínam s Nette a zatiaľ sa mi podarilo všetky zádrhy vyriešiť. Mal by som však otázku k preposielaniu údajov z formulára na spracovanie do databázy.

Mám formulár požadujúci heslo a jeho opätovné zadanie.

<?php
$form->addPassword('password', 'Heslo', NULL, 50)
	->addRule(Form::FILLED, 'Chýba heslo.');
$form->addPassword('password2', 'Heslo znovu', NULL, 50)
	->addRule(Form::FILLED, 'Chýba overovacie heslo.')
	->addRule(Form::EQUAL, 'Heslá sa nezhodujú.', $form['password']);
?>

A potom to posielam na spracovanie, ktoré som chcel vykonať takto:

<?php
$user->insert($form->getValues());
?>

Ale to mi samozrejme zahlásilo chybu, že je tam password2 navyše. Tak som to upravil do takejto podoby:

<?php
$values = $form->getValues();
$usersInsert = array(
'name' => $values['name'],
'username'  => $values['username'],
'password'  => $values['password'],
);

$user->insert($usersInsert);
?>

Takto mi to funguje, len by som si chcel overiť, že to neide v Nette nejako krajšie – napríklad nejakou podmienkou pri password2. Napadlo mi aj napríklad vymenovaním parametrov v getValues, ale takto to samozrejme nepôjde. Hľadal som vo fóre aj v dokumentácii, bohužiaľ neúspešne.

romansklenar
Člen | 655
+
0
-

Zda přímo ve formulářích nevím, jediné prvky které se neodesílájí 100% jsou ty s příznakem disabled, ale pár řádků by se dalo ušetřit jednoduše takto:

$values = $form->getValues();
unset($values['password2']);

$user->insert($values);