簡體   English   中英

找不到 / 的路由,即使定義了路由

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM