4 Stimmen

YII speichert nur den letzten Flash?

Ich habe den folgenden Code:

Yii::app()->user->setFlash('error', "Daten1 fehlgeschlagen!");
Yii::app()->user->setFlash('error', "Daten2 fehlgeschlagen!");
Yii::app()->user->setFlash('error', "Daten3 fehlgeschlagen!");

$flashes = Yii::app()->user->getFlashes();
if (sizeof($flashes) > 0 ) {
  print '';
  foreach($flashes as $key => $message) {
    print '' . $message . "\n";
  }
  print '';
}

Egal was ich mache, es druckt IMMER nur "Daten3 fehlgeschlagen!". Warum überschreibt es die Flashes mit dem letzten und fügt nicht alle Flashes einem Array hinzu?

Ich habe dies in meiner Konfiguration ausprobiert, aber kein Glück gehabt:

'user' => array(
  'allowAutoLogin' => true,
  'class' => 'WebUser',
  'autoUpdateFlash' => false, 
),

Irgendwelche Ideen?

3voto

bool.dev Punkte 17202

Dies ist das erwartete Verhalten. Yii Flash-Nachrichten sind ein Schlüssel-Wert-Speicher, was bedeutet, dass für jeden Schlüssel (zum Beispiel Fehler) ein Wert (Nachricht) gespeichert wird.

Mit Ihrem aktuellen Code überschreiben Sie den Wert des Schlüssels Fehler mit einer neuen Nachricht bei jedem Aufruf von setFlash.

Sie könnten Ihre Nachrichten stattdessen an den gleichen Schlüssel anhängen (pseudo):

Yii::app()->user->setFlash('Fehler', "Daten1 fehlgeschlagen!");
Yii::app()->user->setFlash('Fehler',
    Yii::app()->user->getFlash('Fehler', '')." Daten2 fehlgeschlagen!");
Yii::app()->user->setFlash('Fehler',
    Yii::app()->user->getFlash('Fehler', '')." Daten3 fehlgeschlagen!");

Wie Sie aus dem obigen Beispiel sehen können, ruft getFlash eine einzelne Nachricht aus dem Flash-Speicher ab.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X