Dosazení options value do select v latte

- Vojtěch Dobeš
- Gold Partner | 1316
Mnohem lepší je využít metodu setDefaultValue(). Tedy
v definici formuláře:
$form->addSelect('name', 'Label:', array( ... ))
->setDefaultValue($value);
Stejně tak u addText:
$form->addText('id', 'ID:')
->setDefaultValue($value);
V šabloně pak stačí {input id}. Lze použít i
setValue, která hodnotu vynutí (setDefaultValue jen
nastaví výchozí hodnotu, která je přepsána třeba při znovuvykreslení
formuláře kvůli nějaké chybě).

- Vojtěch Dobeš
- Gold Partner | 1316
Chápu, že jsem neodpověděl přímo na dotaz, protože se domnívám, že
v naprosté většině případů je lepší použít API formulářů. Prvku
<select> vykreslenému formulářovým makrem hodnotu předat
nejde – makro umožňuje přidávat pouze další HTML atributy danému
prvku, nefunguje jako obálka nad formulářovým API.
Úplně nerozumím druhé větě – o co se přesně snažíš? Věřím, že existuje cesta bez potřeby nastavovat hodnotu selectu v šabloně :)

- Vojtěch Dobeš
- Gold Partner | 1316
Rozumím, a jak to máš zatím řešené? Jeden velký formulář? Spousta
malých formulářů jeden pro každý produkt? Předpokládám nějaký
{foreach} produktů v šabloně, v presenteru předaný do
$this->template->products?
Co mě k tomu napadá:
- Potřebuješ to na zadání výchozí hodnoty? Opravdu správné místo je to řešit v definici formuláře.
- Potřebuješ to de-facto jako placeholder? V definici
formuláře je metoda
setPrompt(). Např.:->setPrompt('zvol počet balení'). - Teď jsem si ještě přečetl jednou tvůj první příspěvek, a:
options, tedy chápu jako$itemsjde skutečně nastavit jen jako 3. parametr->addSelectnebo pomocí metodysetItems(). V šabloně by šlo `{? $form[‚name‘]->setItems($items)} (nebo klidně cokoliv jiného), ale to je prasárna.
Vpodstatě všechny 3 usecase by se měly řešit v definici formuláře.