Question

Je suis en utilisant les méthodes de setFlash et hasFlash de symfony 1.4 avec WAMP 2.0

Localement avec mon application frontend_dev, tout va bien de travail. Mais dans un environnement de production, mon $this->forward404Unless($user->hasFlash('resultsArray')); test échoue.

Je pensais que les méthodes flash où activées par défaut. Que puis-je faire pour que cela fonctionne s'il vous plaît?

Modifier. J'ai trouvé un message d'erreur intéressant

Voici mon fichier filters.yml

# 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: ~

Dans le frontend_prod.log, je:

  

16 mars 05:57:42 symfony [info] {} sfPatternRouting route Match "page d'accueil" (/) pour / avec tableau de paramètres ( 'module' => 'principale', 'action' => 'index',)
  16 mars 05:57:42 symfony [err] {} sfParseException fichier de configuration "D: \ wamp \ bin \ php \ symfony \ symfony14 \ lib / config / config / filters.yml" spécifie la catégorie "flash" avec une clé de classe manquante.

Était-ce utile?

La solution

Avez-vous appelez executeShowResult action dans une redirection / contexte avant? Le flash a une durée de vie limitée et il disparaîtra après la requête suivante. Il est clair que le resultsArray a été débusqué.

Autres conseils

Vous avez un 404 étant généré dans la production (favicon ou image) et qui compte comme une demande à l'action 404 (après une redirection) effacer vos variables Flash.

Je ne sais pas si cela est la réponse, mais je n'ai pas une clé flash dans mon dossier filters.yml, dans un Symfony 1.4.3 app, et je ne l'ai pas touché depuis saisissant la version du site Symfony . Avez-vous essayé de supprimer cette ligne du fichier YML, vider votre cache et d'essayer à nouveau?

Je me demande si le cache est activé pour prod?

Si vous le faites, et mettent en cache with_layout (ou si le flash est dans le modèle d'action, puis la mise en cache l'action correspondante), alors il sera retourné la page en cache sans le message flash sur les vues suivantes.

Assurez-vous que vous avez la use_flash=true sur votre factories.yml

user:
  class: myUser
  param:
    timeout:         3600
    logging:         %SF_LOGGING_ENABLED%
    use_flash:       true
    default_culture: %SF_DEFAULT_CULTURE%    

Une réponse assez vieux, mais je l'espère est d'une certaine utilité à quelqu'un d'autre avec le même problème.

@Lunohodov

(Désolé pour l'affichage d'une réponse au lieu d'un commentaire, mais je ne peux pas utiliser cette cause de façon de la limitation des caractères)

Voici l'action:

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: Un autre journal intéressant. Dans mon action qui a mis le flash, j'ai mis un journal pour tester l'ensemble et les méthodes hasFlash ... et cela a fonctionné:

$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");
}

Les journaux pour que:

  

16 mars symfony 06:07:13 [info] Le flash est réglé

Je pense que je manque quelque chose de grand ici ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top