Vlastný js pre odoslanie formulára

Creator26
Člen | 3
+
0
-

Skúšam použitie Nette Forms. Potreboval by som použiť vlastnú validáciu.

public function registerForm()
{
    $form = new Form;

    $roles = [
        2 => 'Klub',
        3 => 'Tréner',
        4 => 'Hráč',
    ];

    $form->addEmail('email', 'Email')
        ->setRequired('Zadejte prosím email')
        ->setAttribute('class', 'form-control')
        ->setAttribute('placeholder', 'Email')
        ->addRule($form::EMAIL, 'Nesprávny formát emailovej adresy');
    $form->addPassword('password', 'Heslo:')
        ->setRequired('Zvoľte si heslo')
        ->setAttribute('class', 'form-control')
        ->setAttribute('placeholder', 'Heslo')
        ->addRule(Form::MIN_LENGTH, 'Heslo musí mať alespoň %d znakov', 8);
    $form->addPassword('passwordVerify', 'Heslo pre kontrolu:')
        ->setRequired('Zadejte prosím heslo ešte raz')
        ->setAttribute('class', 'form-control')
        ->setAttribute('placeholder', 'Heslo znovu')
        ->addRule(Form::EQUAL, 'Hesla se nezhodujú', $form['password']);
    $form->addSelect('role', 'Vyberte typ používateľa', $roles)
        ->setRequired('Vyberte typ registrácie')
        ->setAttribute('class', 'form-control')
        ->setAttribute('placeholder', 'Heslo')
        ->setPrompt('Zvolte si typ registrácie');
    $form->addSubmit('send', 'Vytvoriť konto')
        ->setAttribute('class', 'btn btn-success btn-block');

    return $form;

}

Formulár vykreslujem nasledovne. Problém je, že mi nevypisuje daný zápis chyby. Chybové hlášky mi vyskakujú iba vo vyskakovacom okne, co sa mi moc nepaci. Chyby by som si chcel spracovať svojim sposobom. Navyse tam potrebuje ajaxovo nacpat, ci uz sa dana emailova adresa pouziva, alebo nie.

<!-- Register Form -->
 {$frmRegister->render('begin')}
 {$frmRegister->render('errors')}
     <h5>Register Now!</h5>
     {foreach $frmRegister->errors as $error}
         {$error}
     {/foreach}
     <div class="form-group">
         {$frmRegister['email']->control}
     </div>
     <div class="form-group">
         {$frmRegister['password']->control}
     </div>
     <div class="form-group">
         {$frmRegister['passwordVerify']->control}
     </div>
     <div class="mws-form-item">
         {$frmRegister['role']->control}
     </div>

     <div class="form-group form-group--submit">
         {$frmRegister['send']->control}

     </div>

{$frmRegister->render('end')}
 <!-- Register Form / End -->

Poprosil by som vas o radu ako to docielit.

Editoval Creator26 (25. 8. 2018 0:18)

GEpic
Člen | 562
+
0
-

Ověřování existence e-mailu onchange / ajaxem je absolutní a nelogickej nesmysl – fakt, nedělej to, budeš se s tím zbytečně je**t. To stačí bohatě při odeslání formuláře. Protože mezi námi, jak často se stane, že již účet s e-mailem existuje? To se stane jedině v případě, že je uživatel debil a zapomněl, že se do té služby již registroval.

Jinak, pokud chceš řešit vypisování chybových hlášek svým způsobem, můžeš se inspirovat zde (nebo rovnou knihovnu použít)

Editoval GEpic (25. 8. 2018 2:33)