Nette 2.2: redirect, forward – samovolné přeskládání parametrů
- jik
- Člen | 149
Zdravím,
z jednoho presenteru předávám zpracování druhému:
class LvPresenter extends SecuredPresenter {
...
public function snimkyFormSubmitted(Form $form) {
...
$this->forward('Dif:default', $form->values->katastr_id, $form->values->snimek_id, true);
}
}
class DifPresenter extends SecuredPresenter {
public function actionDefault($katastr_id, $snimek_id, $ident) {
dump($katastr_id, $snimek_id, $ident); die;
}
}
Tento kód vyhodí:
`„Dif:default“ (11)
„616591“ (6)
„1“`
Tedy jako 1. parametr vrátí název metody, jako 2. parametr vrátí
1. parametr (katastr_id) a jako 3. parametr vrátí 3. parametr. Ale ztratil
se ten druhý parametr. Stalo se mi to podruhé, poprvé jsem to s nějakými
problémy obešel, nebo to odešlo samo… Nevíte někdo, co by mohlo být
příčinou? Já vím, je to staré Nette, ale konverze probíhá jen ve
volném čase…
- David Matějka
- Moderator | 6445
kdyz dumpnes v tom Dif presenteru $this->getParameters()
,
tak tam je co za hodnoty?
a funguje to, kdyz parametry predas pojmenovane? tzn
$this->forward('Dif:default', ['katastr_id' => $form->values->katastr_id, 'snimek_id' => $form->values->snimek_id, 'ident' => true]);
- jik
- Člen | 149
hm… zajímavé. Pokud volám redirect
$this->redirect('Dif:default', $form->values->katastr_id, $form->values->snimek_id, true);
class DifPresenter extends SecuredPresenter {
public function actionDefault($katastr_id, $snimek_id, $ident) {
dump($this->getParameters()); die;
}
}
odpoví:
`array (5)
action ⇒ „default“ (7)
id ⇒ NULL
katastr_id ⇒ „Dif:default“ (11)
snimek_id ⇒ „667421“ (6)
ident ⇒ „1“`
Pokud použiji forward, je to správně:
$this->forward('Dif:default', $form->values->katastr_id, $form->values->snimek_id, true);
vrací:
`array (4)
katastr_id ⇒ „667421“ (6)
snimek_id ⇒ 209
ident ⇒ TRUE
action ⇒ „default“ (7)`
Pokud dám pojmenované parametry
$this->redirect('Dif:default', ['katastr_id' => $form->values->katastr_id, 'snimek_id' => $form->values->snimek_id, 'ident' => true]);
vrátí „skoro správně“ (ident =1 namísto true)
`array (5)
action ⇒ „default“ (7)
id ⇒ NULL
katastr_id ⇒ „667421“ (6)
snimek_id ⇒ „209“ (3)
ident ⇒ „1“`
forward to předá úplně správně:
`array (4)
katastr_id ⇒ „667421“ (6)
snimek_id ⇒ 209
ident ⇒ TRUE
action ⇒ „default“ (7)`