在同一个函数上分别应用多个 JMS 序列化组
Apply separately many JMS serialization groups on the same function
我正在寻找具有 jms_serliazer 的功能。
好的,让我解释一下,假设我们有一个函数 getArticlesAction()
,和一个名为 group
的 query param
,它将代表 组序列化名称 .
所以,在得到序列化组的名称$paramFetcher->get ('group')
之后,是否可以应用serliazer组,eather group1或group2,基于该查询参数已经恢复?
这是我的例子:
/**
* @FOSRest\QueryParam(name="group")
*/
public function getArticlesAction(ParamFetcherInterface $paramFetcher)
{
$groupName = $paramFetcher->get('group');
//yourlogic
}
这是我在 Entity.Article.yml 下配置的一部分,它负责序列化的方式。
ArticleBundle\Entity\Article:
properties:
id:
expose: true
groups: [group1, group2]
name:
expose: true
serialized_name: name
groups: [group1]
label:
expose: true
serialized_name: label
groups: [group2]
在我的示例中,如果我们应用 group1,我们将获得具有 (id, name) 键的对象集合,并且如果我们应用 group2,那么我们将获得具有 (id, label) 键的对象集合。
如果您让群组通过参数进入,假设验证它是一个有效的群组名称,您可以这样做:
在class的使用部分,添加:
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']);
}
我正在寻找具有 jms_serliazer 的功能。
好的,让我解释一下,假设我们有一个函数 getArticlesAction()
,和一个名为 group
的 query param
,它将代表 组序列化名称 .
所以,在得到序列化组的名称$paramFetcher->get ('group')
之后,是否可以应用serliazer组,eather group1或group2,基于该查询参数已经恢复?
这是我的例子:
/**
* @FOSRest\QueryParam(name="group")
*/
public function getArticlesAction(ParamFetcherInterface $paramFetcher)
{
$groupName = $paramFetcher->get('group');
//yourlogic
}
这是我在 Entity.Article.yml 下配置的一部分,它负责序列化的方式。
ArticleBundle\Entity\Article:
properties:
id:
expose: true
groups: [group1, group2]
name:
expose: true
serialized_name: name
groups: [group1]
label:
expose: true
serialized_name: label
groups: [group2]
在我的示例中,如果我们应用 group1,我们将获得具有 (id, name) 键的对象集合,并且如果我们应用 group2,那么我们将获得具有 (id, label) 键的对象集合。
如果您让群组通过参数进入,假设验证它是一个有效的群组名称,您可以这样做:
在class的使用部分,添加:
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']);
}