为什么 symfony FOSRest 包找不到合适的控制器?
Why symfony FOSRest bundle doesn't find the right controller?
我有两个动作:
/**
* @Rest\Get("/items/{itemId}")
*/
public function getAction(UuidInterface $id): View
和
/**
* @Rest\Get("/items/available")
*/
public function getAvailableAction() : View
问题是,当我尝试通过 link items/available
调用 getAvailableAction 时,正在调用 getAction。我猜它会将 available 这个词解释为 {itemId}
不知何故。
我该如何解决?
你猜对了。只需定义一个适当的要求:
/**
* @Rest\Get("/items/{itemId}", requirements={"itemId" = "\d+"})
*/
如果您的 itemId
是 UUID,请将数字正则表达式从 \d+
更改为 [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}
或简化的 [a-fA-F0-9\-]{36}
。
别忘了清除缓存。
我有两个动作:
/**
* @Rest\Get("/items/{itemId}")
*/
public function getAction(UuidInterface $id): View
和
/**
* @Rest\Get("/items/available")
*/
public function getAvailableAction() : View
问题是,当我尝试通过 link items/available
调用 getAvailableAction 时,正在调用 getAction。我猜它会将 available 这个词解释为 {itemId}
不知何故。
我该如何解决?
你猜对了。只需定义一个适当的要求:
/**
* @Rest\Get("/items/{itemId}", requirements={"itemId" = "\d+"})
*/
如果您的 itemId
是 UUID,请将数字正则表达式从 \d+
更改为 [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}
或简化的 [a-fA-F0-9\-]{36}
。
别忘了清除缓存。