Render template aktualiho view do payloadu
- washo
- Člen | 88
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
Missing template file ‚W:\wwwdata\htdocs_test\document_root/../app/templates/PopupForm/1‘.
Zavináče.
- washo
- Člen | 88
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?