2012-05-09 29 views
5

Tôi đang gặp sự cố khi tìm ra điều gì sai với một tuyến đường singe trong tệp định tuyến YML của Symfony2 của tôi. Mọi tuyến đường khác đều hoạt động tốt (và tôi đã có vài chục chiếc), nhưng tuyến đường này không được công nhận.Gỡ lỗi lộ trình trong Symfony2

Dưới đây là clip có liên quan của tập tin YML tôi:

ProjectMainBundle_util_initUpload: 
    pattern: /util/initUpload 
    defaults: { _controller: ProjectMainBundle:Utilities:initUpload } 
    requirements: 
     _method: POST 

ProjectMainBundle_util_init: 
    pattern: /util/init 
    defaults: { _controller: ProjectMainBundle:Utilities:initUtilities } 
    requirements: 
     _method: POST 

ProjectMainBundle_util_download: 
    pattern: /util/download 
    defaults: { _controller: ProjectMainBundle:Utilities:download } 
    requirements: 
     _method: GET 

Các tuyến đường đầu tiên, '/ util/initUpload', trả về một 'Không tìm thấy tuyến đường cho "POST/util/initUpload" lỗi. Tôi đã thử đặt khối ở những nơi khác nhau (thậm chí di chuyển nó ở trên '/ util/init'.) Tuyến đường chỉ mục '/' nằm ở cuối tài liệu routing.yml của tôi, do đó không phải là vấn đề. Các tuyến phía trên là các tuyến duy nhất có định dạng/util/*.

Tuyến đường phục vụ để xử lý biểu mẫu và tải lên tệp nhưng tôi không nghĩ rằng vấn đề đó là quan trọng. Tôi đã gỡ bỏ yêu cầu POST và kiểm tra nó trực tiếp trong trình duyệt, và điều đó vẫn cho tôi lỗi tương tự .. CamelCase không phải là vấn đề. Tôi có các tuyến đường khác ở định dạng đó hoạt động tốt ...

Còn gì khác nữa? Bất kỳ đề xuất về cách gỡ lỗi này? Bước tiếp theo của tôi là để loại bỏ các tập tin YML và viết lại bằng cách sử dụng định dạng php, mặc dù tôi thực sự không muốn làm điều đó ..

Trả lời

20

Có một lệnh để liệt kê tất cả các tuyến đường của bạn:

app/console router:debug 

Nếu bạn không thấy tuyến đường của mình ở đó, trước tiên hãy thử xóa bộ nhớ cache. Nếu không hiệu quả, hãy xóa định nghĩa tuyến đường và nhập lại theo cách thủ công - không sao chép/dán.

P.S. Nó không liên quan gì đến YAML/PHP.

+6

Việc sử dụng lệnh "bộ định tuyến: gỡ lỗi" không còn được dùng kể từ phiên bản 2.7 và sẽ bị xóa trong 3.0. Thay vào đó, hãy sử dụng "debug: router". – dotoree

+2

'debug: router' hoạt động. Cảm ơn @dotoree. – mtchuente

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