Začátky s registrací uživatelů
- Checkpoint
- Člen | 34
Zdravíčko,
začínám s Nette a zatím všechno funguje. Dostal jsem se k bodu, kdy potřebuji udělat přihlašování/registraci uživatelů a nevím, jak dále postupovat.
V UsersRepository jsem si vytvořil metodu getUzivatele(), která vrací
všechno z tabulky Users a dále funkci registraceUzivatele(), která má
daného uživatele zaregistrovat.
Zde je kód.
<?php
class UsersRepository extends Repository {
public function getUzivatele() {
return $this->connection->table('users');
}
public function pocetUzivatelu() {
return $this->connection->table('users')->count('*');
}
public function registraceUzivatele($login, $email, $password) {
return $this->getUzivatele()->insert(array(
'login' => $login,
'email' => $email,
'password' => $password
));
}
}
?>
A v presenteru jsem si vytvořil komponentu RegistraceForm a dále
registerFormSubmitted.
Zde je kód RegistracePresenter.php, resp. komponenta.
<?php
protected function createComponentRegistraceForm() {
$form = new Form;
$form->addText('login', 'Uživatelské jméno:')
->setRequired('Uživatelské jméno je povinné!');
$form->addText('email', 'Váš Email:')
->setRequired('Email je povinný!')
->addRule(Form::EMAIL, 'Zadejte, prosím, platnou emailovou adresu!');
$form->addPassword('password', 'Heslo:')
->setRequired('Heslo je povinné!')
->addRule(Form::MIN_LENGTH, 'Heslo musí obsahovat min. %d znaky', 4);
$form->addSubmit('send', 'Registrovat se!')->setAttribute('class', 'button');
$form->onSuccess[] = $this->registerFormSubmitted;
return $form;
}
public function registerFormSubmitted(UI\Form $form) {
$this->usersRepository->registraceUzivatele($this->list->idUsers, $form->values->login, $form->values->password, $form->values->email);
}
?>
Problém je v tom, že když odešlu formulář, tak se nic nestane, jen se refreshne stránka.
- ViPEr*CZ*
- Člen | 818
Namísto
$form->onSuccess[] = $this->registerFormSubmitted;
dejte
$form->onSuccess[] = callback($this, "registerFormSubmitted");
a dále proč metodě registraceUzivatele pošlete 4 parametry, ale
v definici máte jen 3???
PS: doporučuji si vybrat jeden jazyk cz-en pro pojmenovávání ;-)
- Checkpoint
- Člen | 34
Dané změny jsem provedl, vymazal jsem i ten parametr (idUsers) a pořád se nedaří. :(
- jiri.pudil
- Nette Blogger | 1032
Proč máš v továrničce new Form
, ale v typehintu
zpracování UI\Form
? Nevytváříš v té továrničce náhodou
Nette\Forms\Form
?
- Checkpoint
- Člen | 34
jiri.pudil napsal(a):
Proč máš v továrničce
new Form
, ale v typehintu zpracováníUI\Form
? Nevytváříš v té továrničce náhodouNette\Forms\Form
?
Děkuji za postřeh, v typehintu jsem UI\Form vymazal, ale pořád nic. Nevím, kde může být chyba.
- Checkpoint
- Člen | 34
ViPErCZ napsal(a):
Checkpoint napsal(a):
Pravděpodobně neprovede, jen se refreshne stránka a nic se nestane.
Jaká je URL po odeslání formu?
Pořád stejná, localhost/xxxx/registrace
- David Matějka
- Moderator | 6445
doposud jsi neodpovedel na tu nejdulezitejsi otazku – vytvaris opravdu
Nette\Application\UI\Form
a ne Nette\Forms\Form
?
- Checkpoint
- Člen | 34
matej21 napsal(a):
doposud jsi neodpovedel na tu nejdulezitejsi otazku – vytvaris opravdu
Nette\Application\UI\Form
a neNette\Forms\Form
?
Ano, vytvářím Nette\Forms\Form. :)
- Checkpoint
- Člen | 34
matej21 napsal(a):
coz je spatne, musis vytvaret Nette\Appliation\UI\Form
Super, už to funguje. Díky moc. :)
- ViPEr*CZ*
- Člen | 818
Checkpoint napsal(a):
ViPErCZ napsal(a):
Checkpoint napsal(a):
Pravděpodobně neprovede, jen se refreshne stránka a nic se nestane.
Jaká je URL po odeslání formu?
Pořád stejná, localhost/xxxx/registrace
Díky špatný instanci na správnou třídu Form tam neproběhl signál formuláře. Teď by mělo být vidět, že po odeslání je v URL i parametr pro signál ;-)