2017-10-31 1 views
0

Ich habe eine Entität Event mit den Parametern id und slug in meiner Symfony App. Der Parameter slug ist nullwertfähig und nicht erforderlich. Wenn er fehlt, wird die Verknüpfung zur einzelnen Ereignisseite mit id erstellt. Wenn jedoch slug festgelegt ist, wird URL mit diesem Parameter erstellt.Symfony 301 Redirect im Controller

Die Aufgabe ist es, 301 Redirect für die Ereignisse zu erstellen, die Slug haben. Ich versuche Symfony Methode redirect() zu verwenden, aber ich stieß auf ein Problem: wenn ich Slug zum ersten Mal gesetzt, funktioniert es gut und ersetzte mich von der URL event/3 bis event/my-event-slug. Aber wenn ich den Slug entferne oder den Browser ändere, leite ich immer noch meinen ersten Slug um, der bereitgestellt wurde.

Ich überprüfe es in der Chrome-Konsole und es zeigt mir, dass mein Redirect 301 aus dem Cache geladen wurde.

Wie kann ich das Speichern der Weiterleitung in den Cache verhindern oder wie kann ich dieses Problem auf andere Weise im Controller lösen?

Antwort

0

Try this:

return $this->redirect($url, 301); 
+0

Ja, ich versuche, auf diese Weise und in diesem Fall Umleitung wurde im Cache gespeichert. –

0

Versuchen Sie, diese

$object = new Event(); 

     $router = $this->get('router'); 

     $url = $object->getSlug() ? $router->generate('my_route', $object->getSlug()) : $router->generate('my_route', $object->getId()); 

     $this->redirect($url,301);