在同一功能上单独应用许多JMS序列化组

时间:2018-03-28 19:34:13

标签: symfony serialization jmsserializerbundle jms-serializer

我正在寻找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)键获取对象集合。

1 个答案:

答案 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']);
}