2014-04-07 25 views
9

Tôi có con đường sau đây mà làm việc thông qua một get:Symfony 2 chuyển hướng tuyến đường

CanopyAbcBundle_crud_success: 
    pattern: /crud/success/ 
    defaults: { _controller: CanopyAbcBundle:Crud:success } 
    requirements: 
    _method: GET 

đâu Canopy là không gian tên, bó là AbcBundle, điều khiển CRUD, hành động là thành công.

Sau đây thất bại:

return $this->redirect($this->generateUrl('crud_success')); 

Unable to generate a URL for the named route "crud_success" as such route does not exist. 
500 Internal Server Error - RouteNotFoundException 

Làm thế nào tôi có thể chuyển hướng với generateUrl()?

+3

bạn nên sử dụng: return $ này -> chuyển hướng ($ this-> generateUrl ('CanopyAbcBundle_crud_success')); –

Trả lời

17

Xóa bộ nhớ đệm của bạn sử dụng php app/console cache:clear

return $this->redirect($this->generateUrl('CanopyAbcBundle_crud_success')); 

Nếu các thông số được yêu cầu vượt qua như thế này:

return $this->redirect($this->generateUrl('CanopyAbcBundle_crud_success', array('param1' => $param1)), 301); 
4

Dòng đầu tiên của YAML của bạn là tên đường nên được sử dụng với các bộ định tuyến thành phần. Bạn đang cố gắng tạo URL cho tên tuyến đường sai, tên của bạn là CanopyAbcBundle_crud_success, không phải là crud_success. Ngoài ra, phương pháp generateUrl() thực hiện những gì nó nói: nó tạo ra một URL từ tên tuyến đường và các thông số (nó được thông qua). Để trả lại một phản ứng 403 chuyển hướng, bạn có thể thể sử dụng $this->redirect($this->generateUrl('CanopyAbcBundle_crud_success')) được xây dựng vào lớp Controller cơ sở, hoặc bạn có thể trả về một thể hiện của Symfony\Component\HttpFoundation\RedirectResponse như thế này:

public function yourAction() 
{ 
    return new RedirectResponse($this->generateUrl('CanopyAbcBundle_crud_success')); 
} 
Các vấn đề liên quan