validace formulare addRule – alert onValidate – text v sablone

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

Narazil jsem na rozdílné chybové hlášky u validace formuláře. Pokud použivám addRule viz př 1 tak vyskakuje alert, a pokud používám onValidate viz př 2 chybová hláška je vypsána nad formulářem v šabloně.

Je možné, aby i v případě addRule byla chybová hláška zobrazena textově nad formulářem?

př 1 addRule

<?php
$name = $form->addText('name', 'Name', 30, 15)
                ->addRule(Form::FILLED, "Name must be filled.");
?>

př 2 onValidate

<?php
$form->onValidate[] = callback($this, 'validateLogin');

public function validateLogin($form){
        $values = $form->getValues();
        if($values['login']==""){
            $values['login'] = $values['name'].".".$values['surname'];
            if($this->uzivateleRepository->loginExists($values['login'])){
                $form['login']->setValue($values['login']);
                $form->addError('login exists');
            }
        }else{
            if($this->uzivateleRepository->loginExists($values['login'])){
                $form->addError('created login exists');
            }
        }
    }
?>
s4muel
Člen | 92
+
0
-
$name = $form->addText('name', 'Name', 30, 15)
	->addRule(Form::FILLED, "Name must be filled."); //alebo ekvivalent ->setRequired('message')

toto nastavuje pri renderovani input elementu atribut „required“ a kontroluje to browser, preto v priklade 1 vyskakuju alerty.

skus pozriet https://forum.nette.org/…yb-formulare a vypnut validaciu ako radi enumag (formnovalidate na <input> alebo novalidate na <form>)
napr:

$form->elementPrototype->addAttributes(array('novalidate' => 'novalidate'));