2015-04-20 26 views
12

Làm thế nào tôi có thể chuyển hướng đến một URL bên ngoài trong một hành động symfony?Chuyển hướng Symfony sang URL bên ngoài

tôi đã cố gắng lựa chọn này:

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

Lỗi: Không tìm thấy tuyến đường cho "GET /www.example.com"

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

Lỗi: Bộ điều khiển phải trả lại một phản ứng (null nhất định) .

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

Không có lỗi nhưng trang trống!

+0

Đầu tiên, bạn cũng có thể chỉ định phiên bản nào bạn đang sử dụng –

+0

symfony/symfony v2.6.6 –

Trả lời

22

trả lời cho câu hỏi của bạn là trong cuốn sách chính thức 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 
} 

các "URL" là gì? Bạn có định tuyến thực sự cho mẫu này không? Nếu không, sau đó không tìm thấy lỗi là absolutelly chính xác. Nếu bạn muốn chuyển hướng đến trang web bên ngoài, hãy luôn sử dụng định dạng URL tuyệt đối.

+0

Những gì bạn đã cung cấp là chuyển hướng đến URL hiện có trong ứng dụng. Nếu bạn nhìn kỹ vào tiêu đề của OP, bạn sẽ thấy rằng anh ta hỏi về * external * Url. Hãy nhìn vào câu trả lời của tôi. – Artamiel

+0

Bạn nói đúng. Tôi đã sao chép một ví dụ xấu từ tài liệu chính thức. – kba

+0

Điều này KHÔNG trả lời được câu hỏi, đó là chuyển hướng đến một url EXTERNAL –

14

Bạn phải sử dụng RedirectResponse thay vì đáp ứng

use Symfony\Component\HttpFoundation\RedirectResponse; 

Và sau đó:

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

Đây là cách duy nhất để symfony chuyển hướng theo cách url của trình duyệt thay đổi (cho chuyển hướng nội bộ) . – beterthanlife

+0

@beterthanlife Tôi rất vui vì nó hữu ích cho bạn. – Artamiel

Các vấn đề liên quan