onSuccess na jiný presenter
- AdamBI
- Člen | 17
Zdravím,
Potřeboval bych v presenteru ve formuláři onSuccess přadat na jiný
presenter.
Konkrétně takto: Mám presenter
<?php
namespace App\Presenters;
use Nette;
use App\Model;
use Nette\Application\UI\Form;
class HomepagePresenter extends BasePresenter
{
public function renderDefault()
{
}
protected function createComponentEmailCreateForm()
{
$form = (new CreateemailPresenter())->emailForm();
$form->onSuccess[] = callback('CreateemailPresenter', 'emailFormSubmitted');
return $form;
}
}
A data z formuláře bych potřeboval předat do
<?php
namespace App\Presenters;
use Nette;
use App\Model;
use Nette\Application\UI\Form;
class CreateemailPresenter extends BasePresenter
{
public function renderDefault()
{
}
public function emailForm()
{
$form = new Form;
$form->addProtection('Vypršel časový limit, odešlete formulář znovu');
$form->addText('name');
$form->addText('email')
->setRequired('Musíte vyplnit tvar Vaší adresy');
$form->addPassword('password')
->setRequired('Musíte zadat Vaše heslo')
->addRule(Form::MIN_LENGTH, 'Heslo musí mít alespoň %d znaky', 3);
$form->addPassword('passwordRepeat')
->setRequired()->addRule(Form::EQUAL, 'Neshodují se hesla', $form['password']);
$form->addSubmit('submit');
return $form;
}
public function emailFormSubmitted()
{
$this->flashMessage('Děkuji za komentář', 'success');
$this->redirect('this');
}
}
Bohužel metoda callback již v nette neexistuje nevíte někdo prosím jak
to udělat? Jinak se vlastně jedná o toto https://forum.nette.org/…ny-presenter
ale toto téma je hodně stará a můj problém to neřeší.
Děkuji.
- AdamBI
- Člen | 17
Ale já ho potřebuju jen v jednom presenteru a i kdyby jsem ho přesunel z CreateemailPresenter na HomepagePresenter tak to nemění nic na tom že prostě potřebuju aby se data z HomepagePresenter odeslali do CreateemailPresenter. Chápeš? Jde o to že v Homepage: mám formulář a potřebuju aby se ten formulář zpracoval v CreateemailPresenter. To zpracování mám kompletně v CreateemailPresenter je to samostatná služba která má svůj presenter proto to všechno nedělám v jednom presenteru nechci aby se mi tam opakoval x krát stejnej kod když by to stačilo jen odkázat na presenter kde už je ten kod jdnou napsanej.
Editoval AdamBI (7. 4. 2016 8:07)