2016-12-04 81 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 
    )); 
}