2016-12-04 49 views
0

我刚刚开始Symfony,所以我试图学习路由。因此,相应的官方文档中关于Routing,我做了一个简单的页面是这样的:Symfony - 简单@Route doens似乎没有按预期工作

<?php 
// src/AppBundle/Controller/MainController.php 
namespace AppBundle\Controller; 

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Symfony\Component\HttpFoundation\Response; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 

class MainController extends Controller 
{ 
    /** 
    * @Route("/index", name="Players lister") 
    */ 
    public function renderFirstPage() 
    { 
     return $this->render('accounts.html.twig'); 
    } 

    /** 
    * @Route("/index/{account}", name="Players lister") 
    */ 
    public function getPlayersList($account) 
    { 
     $players = array("Player1", "Player2"); 
     return $this->render('accounts.html.twig', array(
      'account' => $account, 
      'players' => $players 
     )); 
    } 
} 
?> 

但是,当我走在http://localhost:8000/app_dev.php/index我得到No route found for "GET /index"而第二线工程好。相反,如果我删除第二条路线,则第一条路线起作用。

我在做什么错?

+1

路由通过名字被发现的顺序索引。因此,当你的2条路线具有相同的名字时,第二条路线就是写第一条路线。给路线赋予唯一的名称,它应该按预期工作。 – qooplmao

回答

1

注册在Symfony's Routing组件中的每条路由都应该具有唯一的URI和名称。

每条路线还有一个内部名称:blog_list和blog_show。这些可以是任何东西(只要每个都是唯一的)并且没有任何意义。稍后,您将使用它来生成URL。

1

路由路径和名称应该uniq的

/** 
* @Route("/", name="home") 
*/ 
public function renderFirstPage() 
{ 
    return $this->render('accounts.html.twig'); 
} 

/** 
* @Route("/index/{account}", name=players_lister") 
*/ 
public function getPlayersList($account) 
{ 
    $players = array("Player1", "Player2"); 
    return $this->render('accounts.html.twig', array(
     'account' => $account, 
     'players' => $players 
    )); 
}