我正在尝试使用FOSRestBundle和Symfony为两个不同的功能设置相同的路径。这是我所拥有的:
/**
* @Rest\Get("/users")
* @QueryParam(name="login")
*/
public function getLoginAvailability(ParamFetcher $paramFetcher)
{
return $this->_checkLoginAvailability($paramFetcher->get('login'));
}
/**
* @Rest\Get("/users")
*/
public function otherFunc()
{
return "other";
}
问题是:当我通过HTTP GET请求(为它提供登录参数)调用第一个函数时,它正在执行第二个函数,而忽略了第一个函数。有什么建议吗?
答案 0 :(得分:2)
为什么不通过检查您的参数是否已设置并根据结果返回您想要的结果来在一条路径中进行处理?
/**
* @Rest\Get("/users")
* @QueryParam(name="login")
*/
public function getLoginAvailability(ParamFetcher $paramFetcher)
{
$params = $paramFetcher->all();
if (array_key_exists('login', $params)) {
return $this->_checkLoginAvailability($params['login']);
} else {
return $this->otherFunc();
}
private function otherFunc()
{
return "other";
}