Über einen Ajax.Update-Aufruf möchte ich gerne den Inhalt eines divs
ändern.
Ajax.Update('mydiv', '/controller/action');
Das Problem an der Sache ist, dass das mydiv dann mit dem ganzen
Layout gefüllt wird und nicht nur mit der View von der Action. Gibt es
da eine Möglichkeit in der Action die gerenderte View zurückzugeben,
ohne dass er mir das komplette Layout mitrendert? Ich hoffe es ist
verstanden worden, was ich meine.
Vielen Dank schonmal :-)
Grüße
Kris
$this->RequestHandler->setAjax($this);
Wenn der Aufruf dann per Ajax erfolgt, erhälst du die Seite ohne
Layout, sonst mit. Oder um es gleich für alle actions zu machen,
kannst du es auch gleich in beforeFilter schreibern.
Dank dir für die schnelle Antwort :)
Im Controller die Komponente einbinden:
var $components = array('RequestHandler');
dann kannst du in den Methoden z.B. nur ein Element rendern
function index() {
$this->set('data', $this->Model->findAll());
if ($this->RequestHandler->isAjax()) {
$this->render('../elements/mydiv');
exit;
}
}
Der RequestHandler setzt dann automatisch dein Layout auf 'ajax' und
rendert nicht das default Layout um den Content.
Grüße,
Timo
--
Timo Derstappen
Problem: Die Funktion gibts in 1.2. nicht mehr!
Also ist es vermutlich besser entsprechend abzufragen ob über Ajax
Requested wird und dann das Layout zu setzen. Sonst bist du mit dem
Code nicht aufwärtskompatibel.
z.B.
function beforeFilter {
if ($this->RequestHandler->isAjax()) {
$this->layout = 'ajax';
}
}