在我的一个动作中,我使用转发从其他控制器获取数据:
$collect = ($this ->forward('MyPracticeBundle:Collect:collect', array('jid' => 1, 'rid' => $rid)));
CollectController中的collectAction将返回一个json响应:
return new response(json_encode(array("havecollect" => 0)));
现在我想从其他控制器获取这些数据,我尝试:
$collect = json_decode($collect);
但是这行不通,我该怎么处理这个问题呢?
因为您没有获得JSON作为forward
方法的结果,而是symfony响应对象。此外,从您的代码片段中猜测,您试图做一个非常糟糕的事情。
如果你想要一个操作收集数据并以JSON格式返回它,而其他操作对该数据进行其他操作,你应该在你的服务层中创建一个方法来检索该数据并在两个操作中使用它。
只需在我的响应后面添加->getContent()
,并使用$collect = json_decode($collect, true);
,就可以了。