Selectbox, $useKeys = FALSE a použití ITranslatoru

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

Zdravím!

Nevím, jestli něco dělám špatně já, nebo jestli jsem narazil na poměrně závažnou chybu… Pokusím se rozebrat problém:

// EDIT: pro přehlednost problému mírně zestručněno

Formulář vytvořím následujícím způsobem:

$form = new Form();
$form->setTranslator(new MyTranslator());
$form->addSelect('source', 'form.source')
	->addRule(Form::FILLED, 'rule.source.filled');

$options = array(
	'form.source.search',
	'form.source.facebook',
	'form.source.friends',
	'form.source.other',
);

$form['source']->setItems($options, FALSE)
	->skipFirst('form.source.skipfirst');

// ... atd.

Jednotlivé možnosti se při vykreslení předávají překladači a ten vrátí přeloženou hodnotu. Na výstup se tak dostávají optiony následujícího ražení:

<option>Možnost č. 1 přeložená do češtiny</option>
<!-- atd. -->

Při klasickém použití (tj. když se používají klíče, neboli atributy value elementu <option> používají jako ty určující), funguje vše v pořádku a překládané hodnoty jsou jen „pro čtení“, aby uživatel věděl, co volí.

Ve chvíli ale, kdy jsou překládané hodnoty těmi klíčovými, nastává fatální problém, protože nikdy nedojde ke splnění pravidla o zvolení hodnoty a formulář nepustí dál.

Co vy na to?


Framework::VERSION = '1.0-dev';
Framework::REVISION = 'f706a3c released on 2010-06-30';

Prosím o vyjádření, předem díky.

Editoval uestla (27. 8. 2010 14:31)

David Grudl
Nette Core | 8228
+
0
-

fixed

uestla
Backer | 799
+
0
-

Nechci být za hnidopicha, ale ono jak se to vezme…

Teď sice vyplněný formulář projde úspěšně validací i na serveru, jenže po zavolání

$form->getValues()

při zpracování formuláře bych očekával jako hodnotu selectu již přeloženou zprávu – nyní dostanu pouze onen „klíč“.