onChange pri formularoch – ako sa dostat do inej metody
- drick
- Člen | 61
Ahojte, chcel by som spravit jednoduchy formular na zmenu jazyka. Formular obsahuje 1 selectbox a po klinuti na nejaky prvok by som sa chcel dostat do inej metody.
<?php
...
$form = new Form();
$form->addSelect('language', 'Jazyk: ', $langs)
->setPrompt($selectedLang)
->setAttribute('onChange', 'changeLanguage($form)')
->setAttribute('class', 'form-control')
->setAttribute('class', 'selectLanguage');
return $form;
}
public function changeLanguage(Form $form) {
$form->getValues();
$this->redirect('Homepage:default');
}
?>
Dostavam vsak AbortException na redirecte. Viete mi niekto povedat ako to mozem fixnut?
- drick
- Člen | 61
CZechBoY napsal(a):
To cely je v presenteru?
Tu metodu change volas odkud?
Ano, cele je to v presentery.
ChangeLanguage metodu volam v tomto riadku:
->setAttribute(‚onChange‘, ‚changeLanguage($form)‘)
ci myslis odkial volam ten formular? Ten formular je v BasePresentery a v metode createComponenLanguageForm .. toto cele volam v @layout.latte
Editoval drick (26. 2. 2016 18:26)
- premek_k
- Člen | 172
@CZechBoY: No, to by ještě potřeboval v tom formuláři submit prvek, ne?
Pokud to chce přepínat jen tím, že změní hodnotu v Selectu, tak IMHO nezbude, než si na onChange toho Selectu navěsit javascript a v tom JS pak poslat tu hodnotu na server např. ajaxem.
@drick: Podle mne je jednodušší to dělat pomocí odkazů, nějak takto (píšu z hlavy):
<ul>
<li><a n:href="language 'en'">English</a></li>
<li><a n:href="language 'cs'">Česky</a></li>
</ul>
a v presenteru něco takového:
public function actionLanguage($lang) {
# V $lang je kod vybraneho jazyka
}
Editoval premek_k (26. 2. 2016 20:33)
- Matey
- Člen | 142
@drick toto je to čo chceš
...
$form = new Form();
$form->addSelect('language', 'Jazyk: ', $langs)
->setPrompt($selectedLang)
->setAttribute('onChange', 'submit()')
->setAttribute('class', 'form-control')
->setAttribute('class', 'selectLanguage');
$form->onSuccess[] = [$this, 'changeLanguage'];
return $form;
}
public function changeLanguage(Form $form) {
$form->getValues();
$this->redirect('Homepage:default');
}