为什么 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+"})
  */

如果您的 itemIdUUID,请将数字正则表达式从 \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}

别忘了清除缓存。