onSuccess na jiný presenter

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
AdamBI
Člen | 17
+
0
-

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.

ali
Člen | 342
+
0
-

Muzu se zeptat proc to delas takto a vsechno nemas v jednom presenteru?

Popripade si udelej tovarnu s timto formularem a do kazdeho presenteru kde ho potrebujes to injectuj.

Editoval ali (7. 4. 2016 6:58)

AdamBI
Člen | 17
+
0
-

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)

CZechBoY
Člen | 3608
+
+2
-

Tak pokud se na to vaze dalsi logika urcite bych to izoloval do samostatne komponenty.