AppForm: Flash Messages odvozené z rules

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

Napadlo mě udělat takovou extension do Nette, která by jednoduše uměla generovat flash messages (v první verzi třeba zatím jen v češtině) na základě zadaných popisků polí (labelů) a pravidel – tzn. programátor by se mohl zabývat opravdu jen tou logikou aplikace.

Přijde mi totiž, že to je jedna z věcí, kterou tam programátor dopisuje a může to za něj udělat nějaká lépe cvičená opice.

Příklad:

$form->addText('name', 'Jméno:', 30)
	->addRule(AppForm::FILLED, NULL);
$form->addText('name', 'E-mail:', 50)
	->addRule(AppForm::EMAIL, NULL);
/*
 * Automaticky se doplní flashMessage, resp. $form->addError();
 * v některém z následujících znění
 * "%label je povinné pole"
 * "Nevyplnil/a jste %label"
 * "Pole %label vyžaduje platnou e-mailovou adresu"
 */

Nechci tady experimentovat s nějakým strojovým skloňováním ve 4.pádě (nevyplnili jste přezdívku /od „Přezdívka:“/), ale kdyby se ty hlášky napsaly nějak lidsky, bylo by to imho použitelné.

Moje 3 důležité otázky zní:

  1. Neuvažoval jste nad tím už někdo jiný? Nemáte něco hotové? Abych nenosil dříví do lesa.
  2. Byl by o takovou věc obecně zájem?
  3. Jde tyto zprávy nějak rozumně navěsit na AppForm?

Editoval maarlin (30. 6. 2010 16:18)

uestla
Backer | 796
+
0
-

A co public static Rules::$defaultMessages ?

Majkl578
Moderator | 1364
+
0
-

K tomu slouží přesně to, co píše uestla.
Příklad:

Nette\Forms\Rules::$defaultMessages = array(
	Nette\Forms\Form::FILLED => 'Položka „%label“ musí být vyplněna',
	Nette\Forms\Form::LENGTH => 'Položka „%label“ musí být v rozmezí %d a %d znaků',
...
);

Editoval Majkl578 (30. 6. 2010 19:17)

maarlin
Člen | 207
+
0
-

Majkl578 napsal(a):

K tomu slouží přesně to, co píše uestla.
Příklad:

Nette\Forms\Rules::$defaultMessages = array(
	Nette\Forms\Form::FILLED => 'Položka „%label“ musí být vyplněna',
	Nette\Forms\Form::LENGTH => 'Položka „%label“ musí být v rozmezí %d a %d znaků',
...
);

Zajímavé, ani jsem nevěděl, že něco takového existuje… :-) Díky.