2015-04-20 16 views
12

Jak mogę przekierować do zewnętrznego adresu URL w akcji symfony?Przekierowanie Symfony do zewnętrznego adresu URL

Próbowałem to opcje:

1- return $this->redirect("www.example.com"); 

Błąd: Kontroler musi zwrócić odpowiedź (podane null): Nie znaleziono "GET /www.example.com"

2- $this->redirect("www.example.com"); 

Błąd trasy .

3- $response = new Response(); 
$response->headers->set("Location","www.example.com"); 
return $response 

Brak błędu, ale pusta strona!

+0

Pierwszy z nich powinna działać również można określić, która wersja używasz –

+0

symfony/symfony v2.6.6 –

Odpowiedz

22

Odpowiedź na Twoje pytanie znajduje się w Dzienniku książki Symfony.

http://symfony.com/doc/current/book/controller.html#redirecting

public function indexAction() 
{ 
    return $this->redirect('http://stackoverflow.com'); 
    // return $this->redirect('http://stackoverflow.com', 301); - for changing HTTP status code from 302 Found to 301 Moved Permanently 
} 

Jaki jest "URL"? Czy masz naprawdę zdefiniowaną trasę dla tego wzoru? Jeśli nie, to błąd nie znaleziony jest absolutnie poprawny. Jeśli chcesz przekierować na stronę zewnętrzną, zawsze używaj formatu bezwzględnych adresów URL.

+0

To, co podajesz, przekierowuje do istniejącego adresu URL w aplikacji. Jeśli przyjrzysz się bliżej tytułowi OP, zauważysz, że pyta o * zewnętrzny * adres URL. Spójrz na moją odpowiedź. – Artamiel

+0

Masz rację. Mam zły przykład z oficjalnego dokumentu. – kba

+0

To NIE odpowiada na pytanie, które ma przekierować do adresu URL EXTERNAL –

14

Musisz użyć RedirectResponse zamiast Response

use Symfony\Component\HttpFoundation\RedirectResponse; 

, a następnie:

return new RedirectResponse('http://your.location.com'); 
+0

To był jedyny sposób mogę dostać symfony przekierowania w taki sposób, że adres URL w przeglądarce zmienił (na wewnętrznej przekierowania) . – beterthanlife

+0

@beterthanlife Cieszę się, że ci pomogło. – Artamiel

Powiązane problemy