2016-11-28 3 views
3

Ich möchte von Seitenindex zu Folie 1 zu Folie 2 umleiten und dann zu Folie 3 alle 5 Sekunden. Wie kann ich das machen. Bisher ich versuche, diese diese Dokumentation mit: http://symfony.com/doc/3.1/components/http_foundation.html#redirecting-the-userSymfony leitet alle paar Sekunden von Seite zu Seite um

und helfen aus dieser Frage:

How to auto redirect a user in Symfony after a session time out?

In Controller:

/** 
* Bisdisp slide show preview action 
* 
* @param int $id 
* @Route("/bisdisp/{id}/slideshow/", name="_get_bisdisp_slideshow", requirements={"id" = "\d+"}) 
* @Template() 
*/ 
public function slideshowAction($id) 
{ 
    $power_plant = $this->getPowerPlant($id); 
    $response = new RedirectResponse($this->generateUrl('_get_bisdisp_slide1', [ 'id' => $id ])); 
    // $response->headers->set('Refresh', 5); 

    return $response; 
} 

/** 
* Slide 1 view 
* 
* @param int $id 
* @Route("/bisdisp/{id}/slideshow/slide1/", name="_get_bisdisp_slide1", requirements={"id" = "\d*"}) 
* @Template() 
*/ 
public function slide1Action($id) 
{ 
    $power_plant = $this->getPowerPlant($id); 
    $response = new RedirectResponse($this->generateUrl('_get_bisdisp_slide2', [ 'id' => $id ])); 
    // $response->headers->set('Refresh', 5); 

    return $response; 
} 

/** 
* Slide 2 view 
* 
* @param int $id 
* @Route("/bisdisp/{id}/slideshow/slide2/", name="_get_bisdisp_slide2", requirements={"id" = "\d*"}) 
* @Template() 
*/ 
public function slide2Action($id) 
{ 
    $power_plant = $this->getPowerPlant($id); 
    $response = new RedirectResponse($this->generateUrl('_get_bisdisp_slide3', [ 'id' => $id ])); 
    // $response->headers->set('Refresh', 5); 

    return $response; 
} 

in meinen Ansichten:

<meta http-equiv="refresh" content="5"> 
{% block content %} 
<h3>Slide index</h3> 
{% endblock %} 

<meta http-equiv="refresh" content="5"> 
{% block content %} 
<h3>Slide 1</h3> 
{% endblock %} 

<meta http-equiv="refresh" content="5"> 
{% block content %} 
<h3>Slide 2</h3> 
{% endblock %} 
+1

Entfernen Sie die 'http-equiv' in Ihre Ansichten und überprüfen, wie Sie nach einer gewissen Dauer in sf umleiten http://stackoverflow.com/a/18176467/1507546 – smarber

+0

Tnx, es hat funktioniert! – sanof

Antwort

1

Zuallererst solltest du nicht auffrischen Seite aus Ihren Ansichten, so müssen Sie <meta http-equiv="refresh" content="5"> entfernen.

Und dann könnte man so etwas wie dies tun:

private function getRedirectLater($url, $seconds=5) 
{ 
    $response = new Response; 
    $response->headers->set('Refresh', $seconds.'; url='. $url); 

    return $response; 
} 

/** 
* Bisdisp slide show preview action 
* 
* @param int $id 
* @Route("/bisdisp/{id}/slideshow/", name="_get_bisdisp_slideshow", requirements={"id" = "\d+"}) 
* @Template() 
*/ 
public function slideshowAction($id) 
{ 
    $power_plant = $this->getPowerPlant($id); 

    return $this->getRedirectLater($this->generateUrl('_get_bisdisp_slide1', [ 'id' => $id ])); 
} 

/** 
* Slide 1 view 
* 
* @param int $id 
* @Route("/bisdisp/{id}/slideshow/slide1/", name="_get_bisdisp_slide1", requirements={"id" = "\d*"}) 
* @Template() 
*/ 
public function slide1Action($id) 
{ 
    $power_plant = $this->getPowerPlant($id); 

    return $this->getRedirectLater($this->generateUrl('_get_bisdisp_slide2', [ 'id' => $id ])); 
} 

/** 
* Slide 2 view 
* 
* @param int $id 
* @Route("/bisdisp/{id}/slideshow/slide2/", name="_get_bisdisp_slide2", requirements={"id" = "\d*"}) 
* @Template() 
*/ 
public function slide2Action($id) 
{ 
    $power_plant = $this->getPowerPlant($id); 

    return $this->getRedirectLater($this->generateUrl('_get_bisdisp_slide3', [ 'id' => $id ])); 
} 
+0

Ja, ich habe das wie Sie kommentiert und es funktioniert. Tnx! – sanof

Verwandte Themen