duplicita username s live validací před odesláním celého formuláře

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

Nette 2.0.10

1. Nemohu nalézt řešení na fóru. S Nette začínám a přepisuji do něj aukční systém. Nyní jsme se zasekl u problému, jak k registračnímu formuláři připojit ajaxové ověření duplicity uživatelského jména ještě před tím, než celý formulář odešlu.

V UserPresenter.php mám:

<?php
...
$form->addText('username', 'Uživatelské jméno:')
     ->addRule(Form::FILLED, 'Prosím, zadejte své uživatelské jméno.')
     ->addRule(Form::REGEXP, 'Použijte pouze znaky a-z, 0-9 a pomlčku.', '/^[a-z0-9-]+$/i')
     ->addRule(Form::LENGTH, 'Uživatelské jméno musí mít %d - %d znaků.', array(3, 15))
     ->addRule(callback($this, 'validateUsernameExists'), 'Uživatelské jméno je již použito, zadejte prosím jiné!');
...
?>

Callback po odeslání formuláře funguje, jak dosáhnout prosím toho, aby se mi poslední kontrola prováděla rovněž „online“ – pokud to nebude příliš troufalé, mohl bych poprosit o radu? Využívám rozšíření „Live Form Validation for Nette 2.0“.

2. V souvislosti s tímto rozšířením „Live Form Validation for Nette 2.0“ – jak dosáhnu toho, aby se mi v případě, že formulářový prvek je validní, zobrazila za ním hláška typu „Ok, uživatelské jméno je zvoleno správně.“

Děkuji.

macejko1
Člen | 18
+
0
-

Netrufnem si ti to povedat presne a ci toto je najlepsie riesenie ktore je dostupne. Ale napada ma moznost vlozit do formulara nasledujuce:

<?php

$form-addText('username', 'Meno')->getControlPrototype()
->onChange('mojaValidacnaFunkcia()')
->setAttribute('id', 'inputUzivatelskeMeno');

?>
<script>

Function mojaValidacnaFunkcia() {

var uzivatelskeMeno = jQuery.('#inputUzivatelskeMeno).val();

jQuery.get('presenter:metodaNaSpracovanie', {zadaneMeno:uzivatelskeMeno}, function(odpoved){
           If(odpoved == false ) {
                jQuery('#divPreInformacnuHlasku').html('Zadane meno sa pouziva');
           }
           Else jQuery('#divPreInformacnuHlasku').html('Zadane meno je volne');
});
}

</script>

Dalej pokracujes tym ze v presenteri v metode skontrolujes unikatnost mena a dalej mozes postupovat 2.sposobmi, bud pomocou snipetu posles vysledok, vid snipety v dokumentacii ak by si nevedel. Alebo by mohlo fungovat ze ak v presentery, ak sa najde zhoda urobis echo false, ak je meno unikatne das echo true a potom v nasej jQuery funckcii zachytis tento vysledok a podla toho vypisujes hlasku uzivatelovi, vid vyzsie.

Dufam ze som aspon trosku naviedol :)

mishaes
Člen | 4
+
0
-

podívám se na to, myslím, že to by mohla být dobrá cesta. :) Dám vědět – děkuji.

Editoval mishaes (19. 4. 2013 9:23)