[英]No route found for /, even though a route is defined
當我嘗試訪問我的app_dev.php頁面時出現以下錯誤:
No route found for "GET /"
問題是我定義了這條路線,我的 routing.yml 文件是這樣的:
0 v42homepage:
1 pattern: /
2 defaults: { _controller: v42Bundle:Default:index }
3
4 v42meetTheTeamPage:
5 pattern: /meetTheTeam
6 defaults: { _controller: v42Bundle:Default:meetTheTeam }
7
8 v42whatWeDoPage:
9 pattern: /whatWeDo
10 defaults: { _controller: v42Bundle:Default:whatWeDo }
11
12 v42contactUsPage:
13 pattern: /contactUs
14 defaults: { _controller: v42Bundle:Default:contactUs }
15
16 v42homepage:
17 pattern: /login
18 defaults: { _controller: v42Bundle:Default:login }
這是我的控制器:
<?php
47
46 namespace v42\WebsiteBundle\Controller;
45
44 use Symfony\Bundle\FrameworkBundle\Controller\Controller;
43
42 class DefaultController extends Controller
41 {
40 public function indexAction()
39 {
38 $templating = $this->container->get('templating');
37
36 $response = $templating->renderResponse('v42Bundle:Default:index.html.twig');
35
34 return $response;
33 }
32
31 public function meetTheTeamAction()
30 {
29 $templating = $this->container->get('templating');
28
27 $response = $templating->renderResponse('v42Bundle:Default:meetTheTeam.html.twig');
26
25 return $response;
24 }
23
22 public function whatWeDoAction()
21 {
20 $templating = $this->container->get('templating');
19
18 $response = $templating->renderResponse('v42Bundle:Default:whatWeDo.html.twig');
17
16 return $response;
15 }
14
13 public function contactUsAction()
12 {
11 $templating = $this->container->get('templating');
10
9 $response = $templating->renderResponse('v42Bundle:Default:contactUs.html.twig');
8
7 return $response;
6 }
5
4 public function loginAction()
3 {
2 $templating = $this->container->get('templating');
1
0 $response = $templating->renderResponse('v42Bundle:Default:login.html.twig');
1
2 return $response;
3 }
4
5 }
我的所有其他路徑都有效,但在不提供路徑的情況下訪問 app_dev.php 則無效,即使默認情況下這應該解析為我的 / 路徑。 什么可能導致這種情況?
我已嘗試使用此處所述的 Symfony 控制台程序清除緩存。
謝謝
所謂的pattern
現在在路由配置中稱為path
。 舊的密鑰pattern
已被棄用,並將在 Symfony 3.0 中刪除。
參考這里。
如果您為開發環境使用不同的路由,即 routing_dev.yml:
config_dev.yml
framework:
router: { resource: "%kernel.root_dir%/config/routing_dev.yml" }
您必須在 routing_dev.yml 中導入生產路線
路由_dev.yml
# ... dev routes here ... i.e. _wdt, _profiler
_main:
resource: routing.yml
此外,請確保不要覆蓋routing_dev.yml 中的/
路由。
第一個匹配的路由模式總是獲勝 - 在 routing_dev.yml 中導入 routing.yml之前的路由將被覆蓋。
但是……使用相同的路由名稱會覆蓋之前聲明的路由名稱。
您可以使用以下命令檢查應用程序中存在哪些路由
app/console router:debug
app/console router:debug --env=prod
問題在這里:重復的路線名稱
v42homepage:
pattern: /
v42homepage:
pattern: /login
解決方案
將第二個 v42homepage 重命名為 ie v42login 以解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.