Předání hodnot z formuláře do jiného formuláře
- Polki
- Člen | 553
Ahoj ahoj.
Zase já s další otázkou pro chytré hlavičky.
Takže. :)
Mám formulář, který se vyplní a odešle. Na základě vypočítané hodnoty z formuláře se předvyplní jiný formulář, ale na té samé stránce. (Jen se ajaxem překreslí druhý formulář.)
Problém je, že po odeslání toho druhého formuláře nemá data z toho prvního. Tím pádem to padá.
aneb:
Form1:
public function onSuccess(Form $form, ArrayHash $values)
{
if($this->isAjax()) {
$this->secondFormFactory->data = $values;
$presenter->redrawControl('modals');
}
}
Form2: (factory)
public function create()
{
$form = new Form;
if ($this->data) { // Při vykreslování formuláře díky vykonání onSuccess metody ve Form1 je podmínka TRUE
$form->addHidden('jsouData', true);
} else { // Při odesílání Form2, kdy se znovu zavolá tato metoda create() je kvůli nenastavení $this->data podmínka FALSE
$form->addHidden('jsouData', false);
}
$form->addSubmit('submit', 'odeslat')
->setAttribute('class', 'ajax');
return $form;
}
Form2: (success)
public function onSuccess(Form $form, ArrayHash $values)
{
bdump($values->jsouData); /// Vždy vypíše false, což je nežádoucí, jelikož potřebuji podle proměnné data přidávat do formuláře prvky a v případě, že po odeslání data nejsou nikdy nastavena tyto prvky neexistují i když je v prohlížeči uživatel vytvořil.
}
PS: musím mít Form2 jako samostatnou komponentu, jelikož obsah proměnné $this->data nakonec může přicházet odkudkoliv a ne jen z jiného formu a Form2 používám na více místech v aplikaci, kde se Form1 liší. Tedy Form1 je pokaždé jiný, ale Form2 je vždy stejný.
Editoval Polki (12. 1. 2019 11:28)