Kann nicht Flash-Methode in prod-Umgebung verwenden
-
20-09-2019 - |
Frage
Ich verwende die setFlash und hasFlash Methoden von symfony 1.4 mit WAMP 2.0
Lokal mit meiner frontend_dev App, die alle gut funktionieren.
Aber in der Produktionsumgebung, mein Test $this->forward404Unless($user->hasFlash('resultsArray'));
ausfällt.
Ich dachte, dass das Flash-Verfahren, bei denen standardmäßig aktiviert. Was kann ich tun, damit es funktioniert bitte?
Edit:. Ich fand eine interessante Fehlermeldung
Hier ist meine filters.yml Datei
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/12-Filters
rendering: ~
security: ~
# insert your own filters here
cache: ~
flash: ~
execution: ~
Im frontend_prod.log, ich habe:
16. März 05.57.42 symfony [info] {} sfPatternRouting Spiel route "Homepage" (/) für / mit Parameter array ( 'Modul' => 'main', 'action' => 'index',)
16. März 05.57.42 symfony [err] {} sfParseException Konfigurationsdatei "D: \ wamp \ bin \ php \ symfony \ symfony14 \ lib / config / config / filters.yml" gibt Kategorie "flash" mit Klassenschlüssel fehlt.
Lösung
Rufen Sie die executeShowResult Aktion in einem Redirect / Vorwärts-Kontext? Der Blitz hat eine begrenzte Lebensdauer, und es wird nach der nächsten Anfrage verschwinden. Klar, dass die resultsArray wurde ausgespült.
Andere Tipps
Sie haben ein 404 in der Produktion (Favicon oder Bild) erzeugt wird, und das zählt als Anfrage an die 404 Aktion (nach einer Umleitung) Entrümpelung Ihrer Flash-Variablen.
Nicht sicher, ob dies die Antwort, aber ich habe keinen flash
Schlüssel in meiner filters.yml Datei, in einem Symfony 1.4.3 app, und ich habe berühren es nicht, da die Version aus der Symfony-Website Grabbing . Haben Sie versucht, diese Zeile aus der yml Datei zu entfernen, Cache-Speicher löschen und es erneut versuchen?
Ich frage mich, ob Sie für prod aktiviert haben Caching?
Wenn Sie das tun, und das Caching with_layout (oder wenn Blitz in der Aktionsvorlage ist, dann Caching der entsprechenden Aktion), dann wird es die Cache-Seite ohne Flash-Mitteilung auf nachfolgende Ansichten zurückgegeben.
Seien Sie sicher, dass Sie den use_flash=true
auf Ihrem factories.yml
user:
class: myUser
param:
timeout: 3600
logging: %SF_LOGGING_ENABLED%
use_flash: true
default_culture: %SF_DEFAULT_CULTURE%
Eine ziemlich alte Antwort, aber ich hoffe, von Nutzen zu jemandem anderem mit dem gleichen Problem.
@Lunohodov
(Sorry für eine Antwort, anstatt einen Kommentar verfasst, aber ich kann nicht auf diese Weise Ursache der Zeichen Einschränkung verwenden)
Hier ist die Aktion:
public function executeShowResult()
{
$user = $this->getUser();
$this->forward404Unless($user->hasFlash('resultsArray'));
$this->results = $user->getFlash('resultsArray');
$user->setFlash('resultsArray', $this->results);
$this->pager = new myArrayPager(null, 15);
$this->pager->setResultArray($this->results);
$this->pager->setPage($this->getRequestParameter('page'));
$this->pager->init();
$this->myModule = $this->getRequestParameter('myModule');
$this->myTemplate = $this->getRequestParameter('myTemplate');
$forwardPage = '../../'.$this->getRequestParameter('myModule').'/templates/'.$this->getRequestParameter('myTemplate');
$this->setTemplate($forwardPage);
return sfView::SUCCESS;
}
Edit: Ein weiteres interessantes Protokoll. In meiner Aktion, die den Blitz eingestellt, habe ich ein Protokoll setzt die Reihe und hasFlash Methoden zu testen ... und es hat funktioniert:
$user = $this->getUser();
$user->setFlash('resultsArray', $this->results);
if ($user->hasFlash('resultsArray'))
{
sfContext::getInstance()->getLogger()->info("The flash is set");
}
else
{
sfContext::getInstance()->getLogger()->info("The flash is NOT set");
}
Die Protokolle für das:
16. März 06.07.13 symfony [info] Der Blitz ist
Ich glaube, ich bin fehlt hier etwas Großes ...