当我尝试访问 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的控制台程序清除缓存,如here所述。
由于
答案 0 :(得分:2)
在路由配置中,所谓的pattern
现在称为path
。
旧密钥pattern
已弃用,将在Symfony 3.0中删除。
参考here。
如果您为开发环境使用不同的路由,即routing_dev.yml:
config_dev.yml
framework:
router: { resource: "%kernel.root_dir%/config/routing_dev.yml" }
您必须在routing_dev.yml
中导入生产路线routing_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重命名为v42login以解决问题。