Domanda

Sto usando il setFlash e hasFlash metodi di symfony 1.4 con WAMP 2.0

A livello locale con il mio frontend_dev app, tutto funziona bene.Ma in ambiente di produzione, il mio test $this->forward404Unless($user->hasFlash('resultsArray')); non riesce.

Ho pensato che il flash metodi di cui abilitata per impostazione predefinita.Cosa posso fare per renderlo funziona per favore ?

Edit :Ho trovato un interessante messaggio di errore.

Qui è il mio filtri.file 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: ~

Nel frontend_prod.log, ho :

Mar 16 05:57:42 symfony [info] {sfPatternRouting} Match route "home page" (/) per / con parameters array ( 'module' => 'principale', 'action' => 'indice',)
Mar 16 05:57:42 symfony [err] {sfParseException} file di Configurazione "D:\wamp\bin\php\symfony\symfony14\lib/config/config/filters.yml" specifica categoria "flash" con la classe mancante di chiave.

È stato utile?

Soluzione

Chiamare il executeShowResult azione in un redirect/avanti contesto?Il flash ha una durata limitata e scomparirà dopo la richiesta successiva.Chiaramente il resultsArray è stata lavata.

Altri suggerimenti

Si dispone di un errore 404 viene generato in produzione (favicon o immagine) e che conta come una richiesta di azione 404 (dopo un redirect) sgombrare il flash variabili.

Non sono sicuro se questa è la risposta, ma non ho un flash chiave nella mia filtri.file yml, in Symfony 1.4.3 app, e non ho toccato dal afferrando la versione di Symfony, sito.Hai provato a togliere quella riga dal file yml, a svuotare la cache e riprovare?

Mi chiedo se avete la cache abilitata per prod?

Se lo si fa in cache with_layout (o se il flash è in azione il modello, quindi, la cache di azione in questione), quindi verrà restituita la pagina memorizzata nella cache senza il flash messaggio di visualizzazioni successive.

Assicurarsi di che avere il use_flash=true sul tuo factories.yml

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

Una bella vecchia risposta, ma spero che sia di qualche utilità a qualcuno con lo stesso problema.

@Lunohodov

(Scusate per l'invio della risposta al posto di un commento, ma non posso usare questo metodo causa della limitazione di caratteri)

Ecco l'azione :

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'altra interessante di registro.Nella mia azione che impostare il flash, ho messo un log per verificare il set e hasFlash metodi...e ha funzionato :

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

I registri di :

Mar 16 06:07:13 symfony [info] Il flash è impostato

Penso che mi manca qualcosa di grande qui...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top