Render template aktualiho view do payloadu

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

Chtel jsem realizovat presenter jehoz potomci by posilaly svoje templaty v payloadu. Udelal jsem to takhle:

abstract class PopupPresenter extends FrontPresenter
{
	public function sendTemplate()
	{
		if ($this->isAjax())
		{
			try {
				parent::sendTemplate();
			} catch (NAbortException $e){
				$this->payload->popup = (string) $this->template;
				$this->payload->flashes = (array) $this->template->flashes;
			}
		} else {
			throw new InvalidStateException('This action can by ajax requested only.');
		}
	}
}

Ale nezda se mi to moc dobre reseni. Kazdopadne funguje. Akorat pokud pouziju v sablone {exdends …} tak mi to vyhazuje vyjimku:

Missing template file ‚W:\wwwdata\htdocs_test\document_root/../app/templates/PopupForm/1‘.
(PopupFormPresenter je potomkem PopopPresenter)

Dela to pouze u ajaxoveho pozadavku. Pokud odstranim vyjimky a zavolam to normalne tak se sablona vypise. Zkousel jsem ruzne kombinace zavinacu, ale nepomohlo to a myslim ze by tady nemely byt potreba.

Mate nejake lepsi reseni posilani templaty aktualniho action v payloadu?

Nevite kdy vznika tahle vyjimka a jak se ji zbavit?
(Objevuje se mi casteji a nikdy moc nevim proc.)

Pouzivam nette 1.0-dev

Editoval washo (22. 3. 2010 20:14)

Honza Kuchař
Člen | 1662
+
0
-

Missing template file ‚W:\wwwdata\htdocs_test\document_root/../app/templates/PopupForm/1‘.

Zavináče.

washo
Člen | 88
+
0
-

Jo no. Tak precejen zavinac. Chybel pred extends. Resp… nefungovalo to ani s nim protoze jeste bylo treba upravit ten presenter:

abstract class PopupPresenter extends FrontPresenter
{
	public function sendTemplate()
	{
		if ($this->isAjax())
		{
			try {
				parent::sendTemplate();
			} catch (NAbortException $e){
				$this->payload->popup = (string) $this->template;
				$this->payload->flashes = (array) $this->template->flashes;
				$this->sendPayload();
			}
		} else {
			throw new InvalidStateException('This action can by ajax requested only.');
		}
	}
}

Nemate fakt nejake lepsi reseni?