2011-11-28 40 views
18

Trả về Symfony2 Không tìm thấy tuyến đường cho "GET /" khi tôi cố gắng chạy http://localhost/app_dev.php, nhưng url này hoạt động: http://localhost/app_dev.php/hello/Symfony. Tôi đã loại bỏ AcmeDemoBundle và tôi đang cố gắng chạy một gói ví dụ từ một hướng dẫn symfony2. Chuyện gì thế ?symfony 2 Không tìm thấy tuyến đường cho "GET /"

app/config/routing.yml:

ShopMyShopBundle: 
resource: "@ShopMyShopBundle/Resources/config/routing.yml" 
prefix: /

app/config/routing_dev.yml:

_assetic: 
resource: . 
type:  assetic 

_wdt: 
resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml" 
prefix: /_wdt 

_profiler: 
resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml" 
prefix: /_profiler 

_configurator: 
resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml" 
prefix: /_configurator 

_main: 
resource: routing.yml 

src/Shop/MyShopBundle/Resources/config/routing.yml:

ShopMyShopBundle_homepage: 
pattern: /hello/{name} 
defaults: { _controller: ShopMyShopBundle:Main:index } 
requirements: 
    _method: GET 

Trả lời

20

Vấn đề là bạn không có lộ trình cho /. Thay đổi định nghĩa của bạn thành:

ShopMyShopBundle_homepage: 
    pattern:/
    defaults: { _controller: ShopMyShopBundle:Main:index } 
    requirements: 
     _method: GET 
1

Tiền tố là tiền tố cho định tuyến url. Nếu nó bằng '/' có nghĩa là nó sẽ không có tiền tố. Sau đó, bạn đã xác định một lộ trình có mẫu "nó nên bắt đầu bằng/hello".

Để tạo một con đường cho '/' bạn cần phải thêm những dòng này trong src của bạn/Shop/MyShopBundle/Resources/config/routing.yml:

ShopMyShopBundle_homepage: 
    pattern:/
    defaults: { _controller: ShopMyShopBundle:Main:index } 
10

Những câu trả lời trên là sai, tương ứng aren' t trả lời lý do tại sao bạn gặp khó khăn khi xem chế độ prod-demo-content.

Dưới đây là câu trả lời đúng: rõ ràng "sản" của bạn -cache:

php app/console cache:clear --env prod 
+0

Tôi có cùng bây giờ, tôi theo tất cả những lời đề nghị, nhưng không làm việc. Tôi nghĩ tất cả các câu trả lời đều lỗi thời. – samayo

+0

Hôm nay với các chú thích chúng ta phải nhớ để kích hoạt annoations trong file config.yml của bó của chúng tôi: tất cả: tài nguyên: "@ OurBundle/Controller /" loại: chú thích – Nico

+0

Cảm ơn đã sửa Geoffrey – bacbos

5

Công việc này cho tôi:

cache:clear --env=prod 
3

Sử dụng symfony 2.3 với php 5.5 và sử dụng được xây dựng trong máy chủ với

app/console server:run 

mà nên đầu ra một cái gì đó như:

Server running on http://127.0.0.1:8000 
Quit the server with CONTROL-C. 

sau đó đi đến http://127.0.0.1:8000/app_dev.php/app/example

này nên cung cấp cho bạn mặc định, bạn cũng có thể tìm tuyến đường mặc định bằng cách xem src/AppBundle/Controller/DefaultController.php

1

tôi có thể là người duy nhất mắc sai lầm này nhưng có lẽ không phải vì vậy tôi sẽ đăng.

số format for annotations trong các nhận xét trước khi tuyến đường bắt đầu bằng dấu gạch chéo và hai dấu hoa thị. tôi đã phạm sai lầm của một dấu gạch chéo và chỉ có một dấu sao, mà PHPStorm tự động hoàn thành.

tuyến đường của tôi trông như thế này:

/* 
* @Route("/",name="homepage") 
*/ 
public function indexAction(Request $request) { 
    return $this->render('default/index.html.twig'); 
} 

khi nó cần phải có được này

/** 
* @Route("/",name="homepage") 
*/ 
public function indexAction(Request $request) { 
    return $this->render('default/base.html.twig'); 
} 
Các vấn đề liên quan