a) mich interessiert, ob es eine Lösung gibt, die setFlash() Methode für Ajax nutzbar zu machen?
Aktuell habe ich mir selbst eine kleine Lösung gebastelt, die nach z.B. erfolgreich beendeten Ajax Request eine Nachricht "on the fly" ausgibt, aber lieber würde ich natürlich die nativen CakePHP Funktionen nutzen.
Javascriptfunktion
- Code: Alles auswählen
- function systeminfo(mes){
allmessages = mes+'<br>'+allmessages;
document.getElementById('systeminfo').innerHTML = allmessages;
Effect.Appear('systeminfo');
}
im View
- Code: Alles auswählen
- $options = array('url' => array('controller' => $smenu['Menu']['controller'], 'action' => $smenu['Menu']['action']), 'update' => 'content','before' => 'startLoading()','complete' => 'endLoading();systeminfo("Laden von Controller::Action: '.$smenu['Menu']['controller'].'::'.$smenu['Menu']['action'].' beendet.");', 'failure' => 'failure()');
b) Diese Funktion wird auf ein DIV angewendet welches "systeminfo" heißt und im default Layout liegt. Die Funktion wird bei der Option "complete" eingesetzt und aufgerufen. Hier kann man auch mehrere Funktionen hintereinander staffeln. Problem ist aber: ich will das die Systemnachricht z. B. bei erfolgreichen Speichern eines Datensatzes nach ein paar Sekunden wieder ausgeblendet wird - das funktioniert aber nicht, da der Callback erst den completten Ablauf aller Funktionen abwartet - sehr blöd.
Hat jemand hier eine Idee, wie ich ds ausblenden der Nachricht anstoßen kann? Mir fällt nur sowas wie das JS Event Onload(); ein, aber das ist nicht auf ein DIV anwendbar.
Ansonsten bin ich ziemlich begeistert von CakePHP und hoffe, dass diese Gemeinde hier weiter wächst.
Danke für Euer Gehör.
Viele Grüße
Herb