Validování formulářů při zákazu vyskakovacích oken

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

Dobrý den,

v nette jsem začátečník a snažím se napsat svoji první (blbů-vzdornou) aplikaci. Při tvorbě formulářů využívám setRequired() a addRule() abych vytvořil formulář odolný neznalým uživatelům a všiml jsem si že při odesílání špatně vyplněného formuláře dá nette vědět uživateli o chybě pouze javascriptovým vyskakovacím oknem při kliknutí na submit. Také jsem si všiml že kupříkladu chrome při dvou takto vyskočených oknech umožní uživateli zablokovat tyto okna. Jak se potom uživatel dozví co má ve formuláři špatně nebo co mu chybí vyplnit když při klikání na submit se nic neděje (z důvodu zablokovaného vyskakovacího okna)? Existuje nějaký jednoduchý způsob jak umožnit zobrazení chyb přímo na stránce? Například po kliknutí na submit se vedle chybně vyplněných polí objeví chybová hláška. Nechce se mi věřit že by nette nenabízelo nějakou jinou formu validace než zablokovávatelná okna takže se ptám nejspíše na banalitu kterou jsem přeskočil v dokumentaci, v takovém případě se omlouvám.

Děkuji za pomoc.

CZechBoY
Člen | 3608
+
0
-

Defaultní form render by měl vypisovat error hlášky.
Nepoužíváš náhodou custom render nebo nějaký vlastní, který nevypisuje error hlášky?

https://doc.nette.org/cs/forms#…

pastyx
Člen | 25
+
0
-

CZechBoY napsal(a):

Defaultní form render by měl vypisovat error hlášky.
Nepoužíváš náhodou custom render nebo nějaký vlastní, který nevypisuje error hlášky?

https://doc.nette.org/cs/forms#…

Určitě žádný vlastní nepoužívám, tohle je hlavička presenteru:

<?php

namespace App\Presenters;

use Nette,
    Nette\Application\UI\Form;
use App\Model;
use Nette\Security\User;

?>

Formuláře vykresluji pomocí:
{control mujForm}

Vytvářím standartě podle návodů v „píšeme první aplikaci“

Problém může být možná tím že se nikdy k odeslání formuláře ani nedostane, vždy to projde tou validací js i když mám vypnuté vyskakovací okna.

David Matějka
Moderator | 6445
+
0
-

Jedna se o JS validaci netteForms.js.. Tu muzes vypnout a pouzivat pouze serverovou. Nebo si ji uprav, jak potrebujes. A nebo pouzij nejakou existujici modifikaci jako live form validation

xrep
Člen | 51
+
0
-

netteForms.js si nelinkuj. Formular ma premennu errors takisto ako aj komponenty vo formulari. Treba kuk do dokumentacie, ale uvediem priklady

Toto treba vlozit do {form TVOJ_FORM}

<?php
<div n:if="$form->hasErrors()" class="alert">
<ul>
	<li n:foreach="$form->errors as $error">{$error}</li>
</ul>
</div>
?>

toto ti vypise vsetky chyby ktore vrati server validacia vrati.

Keby si chcel vypisovat chyby ku kazdemu inputu zvlast, tak minimalne v sablone sa ku inputu dostanes nasledovne

<?php
{if $form['NEJAKY_INPUT']->hasErrors()}
{* tu renderuj chybovu hlasku*}
{/if}
?>

Editoval xrep (25. 10. 2015 13:18)