Pregunta

estoy usando los métodos setFlash y hasFlash de symfony 1.4 con WAMP 2.0

A nivel local con mi aplicación frontend_dev, todos funcionan bien. Pero en el ambiente de producción, mi $this->forward404Unless($user->hasFlash('resultsArray')); prueba falla.

pensé que los métodos con flash, cuando activadas por defecto. ¿Qué puedo hacer para que funciona por favor?

Editar:. He encontrado un mensaje de error interesante

Aquí está mi archivo 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: ~

En el frontend_prod.log tengo:

  

mar 16 de Symfony 05:57:42 [info] {} sfPatternRouting de ajuste de ruta "página de inicio" (/) para / con los parámetros array ( 'módulo' => 'principal', 'action' => 'índice',)
  Mar 16 de Symfony 05:57:42 [ERR] del archivo de configuración {} sfParseException "D: \ wamp \ bin \ php \ Symfony \ symfony14 \ lib / config / config / filters.yml" especifica la categoría "flash" con clave de clase que falta.

¿Fue útil?

Solución

Cómo se llama la executeShowResult acción en un contexto de redirección / avance? El flash tiene una vida útil limitada y desaparecerá después de la próxima petición. Es evidente que el resultsArray ha sido purgada.

Otros consejos

Tiene un 404 que se generan en la producción (favicon o imagen) y que cuenta como una solicitud a la acción 404 (después de una redirección) la limpieza de las variables de flash.

No estoy seguro si esto es la respuesta, pero no tengo una clave flash en mi archivo filters.yml, en una aplicación Symfony 1.4.3, y no he tocado desde el acaparamiento de la versión del sitio de Symfony . ¿Ha intentado eliminar esa línea del archivo yml, borrar la memoria caché y volver a intentarlo?

Me pregunto si se ha habilitado el almacenamiento en caché de prod?

Si lo hace, y la cache with_layout (o si el flash está en la plantilla de acción, entonces el almacenamiento en caché la acción correspondiente), entonces será devuelta la página en caché sin el mensaje flash en vistas posteriores.

Asegúrese de que tiene el use_flash=true en su factories.yml

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

Una respuesta bastante viejo, pero espero que sea de alguna utilidad para cualquier otra persona con el mismo problema.

@Lunohodov

(Lo siento por publicar una respuesta en lugar de un comentario, pero no puedo utilizar esta causa manera de la limitación de caracteres)

Aquí es la acción:

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;

    }

Editar: Otro registro interesante. En mi acción que establece el flash, he puesto un registro para probar los métodos set y hasFlash ... y funcionó:

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

Los registros de que:

  

mar 16 de Symfony 06:07:13 [info] El flash está ajustado

Creo que me estoy perdiendo algo grande aquí ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top