Přesměrování z komponenty
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- BigCharlie
- Člen | 284
Řeším teď drobný problém s přesměrováním. Mám komponentu, která dědí od Controlu, vytváří formulář pro odeslání e-mailu. A teď se snažím po odeslání formuláře přesměrovat. Přesměrování proběhne. Jenže včetně odesláného formuláře, takže po refreshi stránky se formulář opět odesílá. Jak to vyřešit?
<?php
class AlertBox extends Control
{
public function __construct($presenter, $name)
{
parent::__construct($presenter, $name);
$form = new AppForm($this, $this->name);
...
$form->addSubmit('send', _('Send'));
$form->onSubmit[] = array(
$this,
'sendAlertInfo'
);
$this->form = $form;
}
...
public function sendAlertInfo(AppForm $form) {
...
$this->->getPresenter()->redirect('this'); // totéž, pokud použiju $this->redirect('Homepage:');
}
}
?>
- BigCharlie
- Člen | 284
Ale já na tu komponentu továrničku mám. V šabloně jí zobrazuju
pomocí {widget alertBox}
a v BasePresenteru mám tohle:
<?php
protected function createComponentAlertBox($name) {
return new AlertBox($this, $name);
}
?>
To by mělo být v pořádku, ne?
UPDATE: Abych předešel otázce, proč to nemám celé v továrničce v BasePresenteru a komplikuju to komponentou – protože využívám manuální vykreslení formuláře.
Editoval BigCharlie (7. 2. 2010 13:11)
- Ondřej Mirtes
- Člen | 1536
No ale v tý komponentě nevytváříš formulář pomocí továrničky.
class AlertBox extends Control
{
protected function createComponentForm() {
$form = new AppForm($this, $this->name);
...
$form->addSubmit('send', _('Send'));
$form->onSubmit[] = array(
$this,
'sendAlertInfo'
);
}
...
public function sendAlertInfo(AppForm $form) {
...
$this->->getPresenter()->redirect('this'); // totéž, pokud použiju $this->redirect('Homepage:');
}
}
Editoval Ondřej Mirtes (7. 2. 2010 14:31)