Hlášky, které nezastaví odeslání
- jtousek
- Člen | 951
Zdravím,
napadla mě taková zajímavá věc. Obecně v administračních systémech webu (např. přidávání nějakého článku) jsou ve formuláři některé položky povinné. Ale zároveň je možné mít článek skrytý, tedy nezveřejněný. Napadlo mě, že když je článek ještě neveřejný, není nutné mít vše vyplněné. Jinými slovy, pokud článek není veřejný, určitá validační pravidla nehrají roli (ale e-mail musí samozřejmě stále mít tvar e-mailu). Přesto ale by nebylo úplně ideální, tato pravidla aplikovat až při zveřejňování – nejlepší by bylo chybovou hlášku u prvku zobrazit, ale ne jako error ale jen jako warning (např. žlutě). Samozřejmě ještě při vyplňování formuláře, ne až po odeslání (Live Form Validation).
Nejideálnější by byla možnost definovat tato jemnější pravidla podobně jako standardní – např. takto:
<?php
$form->addText('email', 'Email:', 35)
->setEmptyValue('@')
->addWarning(Form::FILLED, 'Enter your e-mail') //před zveřejněním nemusí být e-mail definován...
->addCondition(Form::FILLED) //...ale je-li vyplněn, musí mít správný tvar
->addRule(Form::EMAIL, 'E-mail is not valid');
?>
Samozřejmě metodu addWarning
si jen tak vycucat z prstu
nemůžu (leda bych jí dopsal přímo do Nette\Forms\FormControl nebo použil
extensionMethod), jen uvádím co by bylo nejlepší. Jak to udělat jinak?
V podstatě bych potřeboval u formuláře mít jednak validaci, která
zastavuje proces odeslání/ukládání a zobrazí červené chyby a jednak
validaci, která jen zobrazí žluté hlášky, ale nemá žádný vliv na
pokračování k uložení dat. Jestli tato druhá validace bude definovaná
odděleně je úplně jedno, ale rád bych na to měl jednotné rozhraní –
pořád je to validace.
Jak nejlépe toto řešit?
Editoval jtousek (18. 12. 2009 14:23)
- Filip Procházka
- Moderator | 4668
tak si přidej validační pravidlo které vrací vždycky true, ale pokud neprojde tak ti nastaví flashMessage s tím warningem :)