我有一个控制器,有许多方法可以传递参数。我期望得到一些响应的数据(取决于我通过的参数)。我正在尝试使用symphony的@QueryParam来验证传入的值,因为其中一些是必要的。
传递的参数可能超过1个,但第一个参数sponsorId是必要的,如果没有传递,我想返回类似'错误:id未设置'的内容
目前我没有使用@QueryParam,我使用的是这样的东西:
public function getSponsorById(Request $request)
{
if(!$args['sponsorId']) {
return 'ERROR: id is not set';
}
.....
$sponsor = .....
return $sponsor;
}
很简单,如果我没有得到参数,我只返回错误信息。 但是如何使它与@QueryParam一起使用?如果验证失败,我怎么说它会返回某个值呢?
/**
* @QueryParam(name="sponsorId", default="", strict=true)
*/
public function getSponsorById(Request $request)
{
.....
$sponsor = .....
return $sponsor;
}
答案 0 :(得分:1)
在这种情况下,您可以使用symfony <section id="featured" class="dynamic-bg">
<div class="inner">
<div class="flexslider effect7">
<ul class="slides">
<li>
<div class="flexslider-item">
<img src="images/slider/kitchen_adventurer_caramel.jpg" data-adaptive-background />
<p class="flex-caption">Adventurer Cheesecake Brownie</p>
</div>
</li>
<li>
<div class="flexslider-item"><img src="images/slider/kitchen_adventurer_cheesecake_brownie.jpg" data-adaptive-background />
<p class="flex-caption">Adventurer Lemon</p>
</div>
</li>
<li>
<div class="flexslider-item"><img src="images/slider/kitchen_adventurer_donut.jpg" data-adaptive-background />
<p class="flex-caption">Adventurer Donut</p>
</div>
</li>
<li>
<div class="flexslider-item"><img src="images/slider/kitchen_adventurer_lemon.jpg" data-adaptive-background />
<p class="flex-caption">Adventurer Caramel</p>
</div>
</li>
</ul>
</div>
类手动执行此操作。
在你的控制器输入参数中添加 ParamFetcher $ paramFetcher :
ParamFetcher
此外,您可以将use FOS\RestBundle\Request\ParamFetcher;
...
/**
* @QueryParam(name="sponsorId", default="", strict=true)
*/
public function getSponsorById(Request $request, ParamFetcher $paramFetcher)
{
$sponsorId = $paramFetcher->get('sponsorId');
// Logic to validate $sponsorId and give it default value if not valid.
}
和requirements
参数与任何验证输入的php regex模式一起使用,如果无效则会出错。像这样:
nullable
如果use FOS\RestBundle\Request\ParamFetcher;
...
/**
* @QueryParam(name="sponsorId", nullable=true, default="", requirements="\d+", strict=true)
*/
public function getSponsorById(Request $request, ParamFetcher $paramFetcher)
{
$sponsorId = $paramFetcher->get('sponsorId');
// Your code.
}
设置为true,当正则表达式与输入不匹配时,RestBundle抛出错误,如果strict
为false,则当正则表达式与输入不匹配时,参数刚跳过。