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.

War es hilfreich?

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 ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top