【发布时间】:2015-12-29 12:39:35
【问题描述】:
有谁知道如何在不删除旧数据的情况下在过滤器 (onKernelResponse) 中将新数据字段添加到现有 JsonResponse (Symfony\Component\HttpFoundation\JsonResponse) 中?
例如,我有自定义控制器
<?php
class MessageController extends Controller
{
public function getAllMessagesAction(Request $request)
{
(...)
return new JsonResponse(array(
'count' => count($messages),
'total_count' => $allMessagesCount,
'messages' => $messages,
));
}
}
还有一些听众
<?php
class NotesListener
{
public function onKernelResponse(FilterResponseEvent $event)
{
(...)
$response = $event->getResponse();
if ($response instanceof JsonResponse) {
$response->setData(array('foo' => 'bar'));
}
}
}
问题
问题是监听器中的$response->setData 会覆盖控制器中传递的数据。此外,JsonResponse 没有像addData() 这样的方法。不幸的是没有方法getData(),所以我无法获取旧数据,修改它,设置新数据。
有谁知道好的解决方案吗?
提前致谢!
【问题讨论】:
-
你真的很接近,但你正在寻找的方法被称为
setContent()和getContent()。也是 JsonResponse 的 see the API docs。