2017-07-17 54 views
0

要求Symfony的控制器路由我有一個這樣的實體:與UUID

class Building 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="id") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="UUID") 
    * @Expose() 
    */ 
    private $id; 

    .... 
} 

我想知道是否有指定UUID的要求,分隔兩個不同的URL像這樣在休息API的方式:

class BuildingController extends BaseController 
{ 
    /** 
    * 
    * @Rest\Get("/buildings/{id}", requirements={"id" = "\d+"}) 
    */ 
    public function getBuildingAction($id) 
    { 
     //code 
    } 

\d+是整數值正確的,但我想改變它在UUID類型,因爲我有例如,這另一條路:

/** 
* @Rest\Get("/buildings/lot") 
*/ 
public function getBuildingLotAction(Request $request) 
{ 
    //code 
} 

可以在需求類型上定義uuid嗎?

感謝

+0

我其實不明白你究竟是什麼意思,但我想知道這是否以任何方式幫助你。 http://www.inanzzz.com/index.php/post/pey5/using-a-custom-class-constant-for-route-annotation-requirements – BentCoder

回答

2

我相信你可以簡單地把前 「/建築/很多」 動作/建築/ {ID}。

First route always win.

盡我所能找到 - this article給出了例子正則表達式的,所以我想PHP正則表達式應該可以正常工作。

還有mention of Symfony expression language,雖然沒有註釋的例子。

+0

當然,但我想知道是否有辦法申報內部需求 –

+0

最大的問題是/建築物/地段永遠無法呼叫,因爲所有路線建築物/繼續我的getBuildingAction,因爲它們的聲明中沒有區別symfony –

+0

試試這個正則表達式:/^[0-9A-F ] {8} - [0-9A-F] {4} -4- [0-9A-F] {3} - [89AB] [0-9A-F] {3} - [0-9A-F] { 12} $/I –