edit formular – redirect pri spatnem vstupu

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

Ahoj,
resim problem s redirectem. Potrebuju presmerovat pri vytvareni edit formulare, pokud zjistim, ze hledanemu id nic neodpovida

class CalendarForm extends \Nette\Application\UI\Form{
...
	$value = $this->repository->loadItem($this->id);

	if (!isset($value)) {
		$this->presenter->redirect('Calendar:list');
	}
...
}

tehle zpusob mi bud vraci „Component '' is not attached to ‚Nette\Application\UI\Presenter‘.“

a pokud si poslu pointer na presenter pri volani CalendarForm (new CalendarForm($this)), tak je vysledkem „Nette\Application\AbortException“

diky za radu

David Matějka
Moderator | 6445
+
0
-
  1. neni dobry dedit od Formu, je lepsi pouzit tovarnu nebo dedit od Controlu, ktery bude mit createComponent* metodu na vytvoreni konkretniho formu.
  2. to, jestli polozka existuje, je lepsi zjistit v presenteru v action* metode
  3. takovyhle operace (vyzadujici jiz pripojenej presenter) ve formu (kde by se to nemelo dit dle bodu 1), ale i ve zdedenem controlu, je dobry napsat asi takhle:
public function attached($presenter)
{
	parent::attached($presenter);
	if($presenter instanceof \Nette\Application\UI\Presenter) {
		//kod zde
	}
}