Empfehlungen: Erweiterte Suche

Ajax Lösung für setFlash()?

JavaScript und AJAX

Ajax Lösung für setFlash()?

Beitragvon Herbomat » So 8. Nov 2009, 14:01

Hallo liebe Leute,

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
Herbomat
 
Beiträge: 6
Registriert: Mo 14. Sep 2009, 20:25

Re: Ajax Lösung für setFlash()?

Beitragvon phil » Mo 2. Aug 2010, 09:53

hy,

ich löse das meist mit einem modal-fenster. Im layout überprüfe ich vor dem <body> Tag ob eine Flash message vorliegt.
Code: Alles auswählen

<?php
    $flashMessage = '';

    if ( $session->check('Message.flash.message') ) {
        $flashMessage = 'onload="Modalbox.show(
            \'http://localhost/cake-flgym/pages/flash\',
            {title: \'System Message\', width: 600 });
            return false;"'
;
    }
?>

<body <?php echo $flashMessage; ?>>
 


Das View /pages/flash sieht wie folgt aus:
Code: Alles auswählen

<?php $session->flash(); ?>
 


Die js-lib für die Modalbox findest du hier: http://okonet.ru/projects/modalbox/

hoffe das bringt was,

mfg, phil
phil
 
Beiträge: 1
Registriert: Mo 2. Aug 2010, 09:37

Re: Ajax Lösung für setFlash()?

Beitragvon Sohail » Mo 11. Okt 2010, 10:01

hi phil
thanks for such a great script. but the only thing missing in it is that i can not set the path like you said i.e, "\'http://localhost/cake-flgym/pages/flash\',
{title: \'System Message\', width: 600 });
return false;"';"
since i am new to cakephp and don't know very much about the archetecture of it, i need help regarding routing and path setting. can you please help me out? i have tried route.php but could not do anything. everything other than

<?php $session->flash(); ?>

is working fine. popup is shown but i cannot call this function which i think clears the session variable.
a quick help will be highly appreciated......
regards
Sohail
 
Beiträge: 1
Registriert: Mo 11. Okt 2010, 09:55

Re: Ajax Lösung für setFlash()?

Beitragvon j-ckruse » So 17. Okt 2010, 11:22

Hallo,

@phil: Hast du zufällig auch eine Idee, wie man die Nachricht automatisch nach z.B. drei Sekunden wieder ausblenden kann?

Gruß,
Jens
j-ckruse
 
Beiträge: 17
Registriert: So 19. Sep 2010, 09:10


Zurück zu JavaScript und AJAX

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast