registrace
- radvis
- Začátečník | 110
Ahoj,
chtěl jsem se zeptat, chci kontrolovat jestli uživatel zadal souhlasná hesla, můžu to napsat takhle?:
public function registraceFormSubmitted(AppForm $RegistraceForm)
{
if ($RegistraceForm['registrovat']->isSubmittedBy()) {
if($RegistraceForm['heslo'] == $RegistraceForm['heslo2']){
$registrace = new Registrace;
$registrace->insert($RegistraceForm->getValues());
$this->flashMessage('Registrace byla dokončena.');
}else{
$this->flashMessage('Nesouhlasné hesla!');
}
}
$this->redirect('Home:default');
}
není to dodělaná, jen se předběžně ptám ať to nemusím zbytečně předělávat. Díky.
- redhead
- Člen | 1313
Kontrola shodnosti hesel se dá udělat dokonce na polích toho formuláře. Výhoda je v tom, že funguje i JS validace a chyba se vyhazuje standardně jako špatně vyplněný formulář.
$form->addPassword("password", "Heslo");
$form->addPassword("password_check", "Heslo znovu")
->addRule(Form::EQUAL, 'Neshodují se hesla', $form['password']);
U toho zbytku problém nevidím.
Editoval redhead (1. 10. 2009 17:44)
- Honza Marek
- Člen | 1664
Asi jo, ale je to zbytečně složitý. Na políčka s heslama lze rovnou při definici formuláře aplikovat pravidla, aby byla stejná.
$form->addPassword("heslo", "Heslo")
->addRule(Form::FILLED);
$form->addPassword("heslo2", "Kontrola")
->addRule(Form::EQUAL, "Hesla musí být stejná", $form["heslo"]);
// EDIT: Tohle se mi snad ještě nestalo :-D Nicméně mám to lepší, pač to mám bez chyby.
Editoval Honza M. (1. 10. 2009 17:43)
- Panda
- Člen | 569
Možná bude lepší použít přímo validaci z Nette. Při vytváření formuláře:
<?php
public function createComponentRegistraceForm()
{
$form = new AppForm();
// ...
$form->addPassword('heslo', 'Heslo:', 40);
$form->addPassword('heslo2', 'Potvrzení hesla:', 40)
->addRule(Form::EQUAL, 'Zadaná hesla se musí shodovat.', $form['heslo']);
// ...
return $form;
}
?>
Pak se o kontrolu hesel postará sám formulář a v události
onSubmit
se nemusí nic kontrolovat. Výhodou je také to, že se
může použít JavaScriptová validace na straně klienta.
//Doplnění: Zatraceně, až třetí :'(
Aby můj post nebyl úplně zbytečný – při chybě ve vyplněném
formuláři bude místo flash zpráviček lepší použít metodu
Form::addError($message)
.
Editoval Panda (1. 10. 2009 17:44)
- Honza Marek
- Člen | 1664
redhead napsal(a):
tou chybou myslíš chybějící Form::FILLED?
Načapal jsem tě ještě, když jsi tam měl $this->form…