Zavolání jiné šablony AJAXem a vypsání obsahu
- dEath
- Člen | 39
Ahoj,
řeším věc, jak si načítat AJAXem jiný obsah, abych nemusel mít hromadu snippetů v jedné šabloně, ale mohl jsem mezi nima přepínat. V layoutu mám odkaz
<a href="{link click!}" class="ajax">Click</a>
v DefaultPresenteru (homepage) mám zaregistrovanou handle pro click
function handleClick(){
if ($this->isAjax()) {
$this->template->setFile('new.ajax.phtml');
}
}
to vše je v pořádku, AJAX požadavek se provede, ale Firebug mi vyhodí
505ku a Missing template file '/new.ajax.phtml'.
Používám
$OldLayoutMode = FALSE, templata ve složce je a házelo to stejnou chybu,
i když jsem použil absolutní cestu (protože jsem nevěděl, jak tu šablonu
načíst). struktura je jako ve skeletonu, ale prostě to tu šablonu
nechce najít.
a chtěl bych se pak i zeptat, jestli todle funguje, tak pokud mám připravené zavináše a handle by se provedl, refreshnulo by to stávající obsah a hodilo obsah požadované proměnné?
Díky za radu
- dEath
- Člen | 39
ono mi to tu šablonu stejně nechce najít, není problém v tom, že
v presenteru na ní nemám odeslaný žádný render? zkusil jsem taky místo
setFile()
použít $this->view = 'ajax';
a to už
obsah načte, ve firebugu se zobrazí nový obsah, akorát to nerefreshne
stránku …
function handleClick(){
if ($this->isAjax()) {
$this->view = 'ajax';
$this->invalidateControl();
}
}
pokud tam není invalidateControl();
, tak se načte přes XHR
HTML stránka, pokud tam bude, získám prázdné snippety, ale obsah se
nenačte. potřebné JavaScript soubory mám načtené, protože AJAX mi jinak
funguje naprosto v pořádku.
aha, v tomhle případě se musel dát i @{include #content} do snippetu … to mi taky mohlo dojít dřív :-) ale díky za radu, nakomplo mě to
Editoval dEath (2. 9. 2010 23:39)