duplicita username s live validací před odesláním celého formuláře
- mishaes
- Člen | 4
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
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 :)