Kdyby\Translation validacni message formu s parametry

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

Ahoj, chci se zeptat, zda-li se da nejak dostat k parametrum z metody ->addRule pro Kdyby\Translation

Ve formulari jiz mam nastaveny translator, takze pokud uvadim v message $form->translator->translate(), tak to hleda v neonu klic s jiz prelozenou zpravou (zprava se sice zobrazuje spravne, ale v debug baru mi sviti tucne ERRORS, s touto neprelozenou zpravou a rad bych se ji zbavil).

Aktualni stav:

$form->addUpload("image", "forms.label.photo")
	->addCondition($form::FILLED)
		->addRule($form::IMAGE, "forms.messages.imageFormat")
		->addRule($form::MAX_FILE_SIZE, $form->translator->translate("forms.messages.maxFileSize", NULL, ["fileSize" => 256]), 256 * 1024);

Da se udelat neco jako toto?:

$form->addUpload("image", "forms.label.photo")
	->addCondition($form::FILLED)
		->addRule($form::IMAGE, "forms.messages.imageFormat")
		->addRule($form::MAX_FILE_SIZE, array("forms.messages.maxFileSize", NULL, ["fileSize" => 256]), 256 * 1024);

Uplne nejlepsi reseni by bylo zde vyuzit identifikator %d (funkce sprintf), ale nenapada me jak..

Dalsi reseni me napadlo vypnout translator ciste pro tento input, kde jej potrebuji rucne (zbytecne se to pak ale komplikuje):

$form->addUpload("image", $form->getTranslator()->translate("forms.label.photo"))
	->setTranslator(NULL)
	->addCondition($form::FILLED)
		->addRule($form::IMAGE, $form->getTranslator()->translate("forms.messages.imageFormat"))
		->addRule($form::MAX_FILE_SIZE, $form->translator->translate("forms.messages.maxFileSize", NULL, ["fileSize" => 256]), 256 * 1024);

Predem diky za vase odpovedi

David Matějka
Moderator | 6445
+
+3
-

Predej tam objekt Kdyby\Translation\Phrase

Jan Mikeš
Člen | 771
+
0
-

Vypada to jako presne to co jsem hledal.
Pokud jsem z testu pochopil spravne pouziti, staci vytvorit objekt

	new Phrase($msg, NULL, ["param"=>$val]);

A o zbytek se postara magie z Kdyby (predani translatoru, localu atd..)?

Edit: funguje to paradne, diky!

Editoval Lexi (29. 1. 2015 12:40)

David Matějka
Moderator | 6445
+
0
-

Ano, staci tohle. A ona to zadna magie neni – nette uz je jedno, jestli je zprava retezec. metoda $translator->translate() se tak zavola s tim objektem.