Vlastní action pro overload tpl
- Landsman
- Člen | 152
Zdravím,
zaujala mě jedna věc. Refactoruji svůj kód, kde jsem definoval action formuláře až v šabloně, což fungovalo korektně, ale moc se mi to nelíbilo a musel jsem zbytečně definovat defaultní action, když do šablony hodnotu pro tu action variable nepošlu.
Tak sem si definoval action s podmínkou ve form factory. Vyplňovala se, zdálo se, že je to změna k lepšímu, avšak formulář se po odeslání nezpracoval. Vůbec se nevykonal callback onSuccess.
Do té action si přidávám identifikaci domény, formulář se bude vkládat pomocí iframe na více webů a já jej poté upravuji podle toho identifikátoru, především layout, šablonu.
Napadá vás, proč se validní formulář s tímto vlastním action, které zadávám ve factory, nezpracuje?
díky
Editoval Landsman (5. 9. 2016 14:20)
- Michal Hlávka
- Člen | 190
Odesíláš formulář fakt na správnou adresu? Obsahuje formulář klíč
do
, s obsahem, jaká akce se má vykonat?
- Landsman
- Člen | 152
Jde o POST, ten parametr načítám fakt jen pro nesouvisející věci se zpracováním.
Přemýšlím jak tu ukázku osekat, je to celkem roztahané vč. práce se session a podobně, tak abych to nezamotal ještě více.
Chtěl jsem se hlavně zeptat na nějakou obecnou práci s tím action. Proč se liší zpracování, když action změním přímo při vytváření formuláře (nefunguje) vs. až při ručním renderu zápisem:
{form reserveForm, action => $formAction, class => 'form-horizontal', target => '_top'}
Btw. máš pravdu ani jsem si toho hidden inputu s „do“ nevšiml! Vypadá to, že se automaticky nepřidává, když udělám přes
$form->setAction($action);
Pokud jej přidám ručně, tedy:
if(null == $formSettings->isDefault)
{
$form->setAction($action);
$form->addHidden('do')
->setDefaultValue('reserveForm-submit');
}
Tak to šlape.
Ale je to takové neintuitivní.
@CZechBoY Proč tomu tak je? Očekává, že bude zpracovaný handlerem?
Editoval Landsman (5. 9. 2016 19:08)
- CZechBoY
- Člen | 3608
Jj posle se signal oznamujici tomu formu ze byl odeslanej form a ma si
vyzvednout hodnoty v postu.
Je to hlavne kvuli podpore vice formularu na jedne strance/presenteru/akci…
nebo taky ten formular muze byt zanoreny v komponentovem strome kdovikde a
komponenty v Nette se vytvari az kdyz jsou potreba.. takze bez signalu bys
nevedeljake komponenty vytvorit.
Jinak proc se ten input neprida nevim.
- Landsman
- Člen | 152
@CZechBoY Ještě jsem narazil na jednu věc, kdy se to v případě toho parametru chová jinak. Když chci použít:
$this->presenter->link(":Consultation:Page: 2")
tak vrátí:
Cannot read an undeclared property App\Forms\ReserveFormFactory::$presenter
Pokud v URl parametr „?ref=x“ nemám, odkaz se vyrenderuje správně.