Formulář s dynamickými selecty a setDefaults
- toka
- Člen | 253
Pokud mám připravený formulář dle postupu zde a chci formuláři např. v editaci nastavit výchozí hodnoty pro závislý select, např. v metodě actionEdit(), dostávám chybovou hlášku, že chci nastavit hodnotu, která neexistuje, protože povolené je prázdné pole.
Pokud to provedu přímo v createComponentForm, tak to funguje správně, ale nepřijde mi to jako správné řešení. Jak toto řešíte? Díky.
Nefunguje
Funguje
- m.brecher
- Generous Backer | 889
@toka
Pokud to provedu přímo v createComponentForm, tak to funguje správně, ale nepřijde mi to jako správné řešení.
Naopak, je běžnou praxí, že modelová třída řídí formulář. Co s tím má presenter společného? Je to záležitost formuláře a modelu.
Nicméně, sosat data do formuláře v akci presenteru lze a asi bude stačit odložit tuto akci na pozdější fázi životního cyklu formuláře:
Nebo totéž přímo v createComponent:
- toka
- Člen | 253
Děkuji za reakci.
Toto právě vůbec nefunguje, s tím onRender[]
to je jako bez
něj, jako když tam bude pouze
$this['form']->setDefaults($data)
.
A mít to zase v tom function createComponentForm()
zase
vyžaduje nějakým způsobem do té funkce dostat parametry navíc, kdy mi
přijde logické to dělat v tom action
. Pokud ten formulář
nemá dynamické obsahy v selectech, tak je zcela funkční dát to
actionEdit()
to setDefaults()
tak, jak to mám
uvedeno výše.
Jde tedy o to, že ten select neobsahuje v tu dobu žádná data a je to prázdné pole.
- toka
- Člen | 253
Ano, pokud je to setDefaults()
v tom
createComponentForm()
, tak to funguje dle očekávání –
správně. Aktuálně to tak používám, ale nepřijde mi to ideální
řešení – nelíbí se mi.
Rád bych to řešil v action
.
Skutečně se správně doplní ta hodnota toho druhého selectu, který je závislý na prvním.
Editoval toka (29. 11. 2023 9:20)
- Martk
- Člen | 661
Tohle mi totiž nefunguje, ani nemůže, protože nastavím city na
CZ_CITY2, ale onAnchor se ještě nezavolal, takže je z toho chyba:
Value 'CZ_CITY_2' is out of allowed set [] in field 'city'
,
protože items je prázdné pole.
Proto se divím, že ti to funguje. Zkouším to na v3.1.11.
Fungovat by mohlo něco takového: