我正在寻找jms_serliazer的功能
好吧,让我解释一下,假设我们有一个函数getArticlesAction()
,一个名为query param
的{{1}}代表组序列化名称。
/>
因此,在获取序列化组group
的名称后,是否可以根据已经恢复的查询参数应用serliazer组,eather group1 或 group2 ?
这是我的例子:
$paramFetcher->get ('group')
这是我在Entity.Article.yml下的配置的一部分,它负责serliazation将如何。
/**
* @FOSRest\QueryParam(name="group")
*/
public function getArticlesAction(ParamFetcherInterface $paramFetcher)
{
$groupName = $paramFetcher->get('group');
//yourlogic
}
在我的示例中,如果我们应用 group1 ,我们将获得具有(id,name)键的对象集合,如果我们应用 group2 ,然后我们将使用(id,label)键获取对象集合。
答案 0 :(得分:1)
如果你让小组通过参数进入,假设验证它是一个有效的组名,你可以这样做:
在课程的使用部分,添加:
use JMS\Serializer\SerializationContext;
use Symfony\Component\HttpFoundation\Response;
然后方法是:
/**
* @FOSRest\QueryParam(name="group")
*/
public function getArticlesAction(ParamFetcherInterface $paramFetcher)
{
$groupName = $paramFetcher->get('group');
//snip - get the repo here
$article = $articleRepo->find($articleId);
$response = $this->get('serializer')->serialize($article, 'json', SerializationContext::create()->setGroups([$groupName]));
return new Response($response, 200, ['Content-Type' => 'application/json']);
}