2016-04-26 5 views
1

Ich arbeite an Ajax Anfrage in CakePHP3 und muss eine Flash-Erfolgsmeldung für den Benutzer auf Erfolg anzeigen.Aufruf von CakePHP3 Flash-Nachrichten von Vorlage

Hier ist, was ich tue:

$('#validate-btn').on('click', function() { 
     $('#validate-btn').text("Validating..."); 
     $('#results-form').submit(); 
     if (ids.length !== 0) { 
      $.ajax({ 
       type: "POST", 
       url: "<?php echo Cake\Routing\Router::url(array("controller" => "results", "action" => "validateSelected"));?>" + "/" + JSON.stringify(ids), 
       cache: false, 
       success: function (data) { 
        $('#validate-btn').text("Validate Selected"); 
        <?php $this->Flash->success("Validated"); ?> 
       }, 
       error: function (data) { 
        alert('s'); 
       } 
      }); 
     } 
    }); 

Alles andere funktioniert gut, aber die Flash-Mitteilung. Wie kann ich die Flash-Nachrichten von cakephp3 in der Ansicht anzeigen?

Hier ist mein, wie ich die Anfrage von der Steuerung über Ajax erhalten:

echo $query->execute()? true : false; 

Antwort

0

Flash-Mitteilungen sind nicht für Json Antwort.

Sie sollten die folgenden tun.

In Ihrem Controller:

$result = $query->execute(); 
if ($this->request->is('ajax')) { 
    $this->set(compact('result')); 
    $this->set('_serialize', 'result'); 
    return; 
} 

gesetzt Calling bei _serialize eine Json Antwort ohne die Notwendigkeit Kästen eine entsprechende json Vorlage für diese Controller-Methode zu erstellen.

In Ihrem js Datei

success : function(data, textStatus, jqXHR){ 
    //the result is available as jqXHR.responseJSON 
} 
+0

Alles, was ich tue, ist mein Controller eine Reihe von IDs zu senden, ist es, die Daten aktualisiert und wahr oder falsch zurückgibt. Ich habe nicht verstanden, wie ich dem Benutzer eine Nachricht über Erfolg oder Misserfolg zeigen werde. –

+0

Was ist nicht klar in meiner Antwort? Wenn $ result ein boolescher Wert ist, können Sie eine Nachricht erstellen, die auf dem Javascript basiert, in der gleichen Zeile in meinem Beispiel. Verwenden Sie Firebug, fügen Sie dort einen Haltepunkt hinzu und überprüfen Sie Ihr jqXHR-Objekt. – rrd

+0

Sie meinen, ich muss einige externe JS Lib für die Anzeige von Flash-Nachrichten verwenden? Meine Frage war, ist es möglich, CakePHP3 flash helper dort anzuzeigen? –