为什么symfony FOSRest捆绑包不';找不到合适的控制器?
我有两个行动:为什么symfony FOSRest捆绑包不';找不到合适的控制器?,rest,symfony,fosrestbundle,Rest,Symfony,Fosrestbundle,我有两个行动: /** * @Rest\Get("/items/{itemId}") */ public function getAction(UuidInterface $id): View 及 问题是,当我试图通过链接items/available调用getAvailableAction时,会调用getAction。我猜它将单词available解释为{itemId}somewhy 我该怎么解决呢?你猜对了。只需定义一个适当的要求: /** * @Rest\Get("/items
/**
* @Rest\Get("/items/{itemId}")
*/
public function getAction(UuidInterface $id): View
及
问题是,当我试图通过链接items/available
调用getAvailableAction时,会调用getAction。我猜它将单词available解释为{itemId}
somewhy
我该怎么解决呢?你猜对了。只需定义一个适当的要求:
/**
* @Rest\Get("/items/{itemId}", requirements={"itemId" = "\d+"})
*/
如果您的itemId
是,请将数字正则表达式从\d+
更改为[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}
或简化的[a-fA F0-F0-9\]{36}
不要忘记清除缓存。Hm,是否有任何配置设置可以用来代替每次编写regex?自定义注释类并在其中定义需求,例如,class RestGetUuid extensed Get{…
。或者停止使用注释并采用YAML配置,在这里您可以控制路由顺序。这两种方法是同一类的一部分吗?在这种情况下,您可以更改它们的定义顺序,以便首先匹配getAvailableAction()
的路由。
/**
* @Rest\Get("/items/{itemId}", requirements={"itemId" = "\d+"})
*/