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$items
jde skutečně nastavit jen jako 3. parametr->addSelect
nebo 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.