Ako neodoslať overovacie heslo
- markoph
- Člen | 3
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
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);