2017-07-17 57 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 –