public function renderJson($data, $status = 200, $headers = array())
{
$response = parent::renderJson($data, $status, $headers);
$data = json_decode($response->getContent(), true);
if (!array_key_exists('message', $data)) {
/** @var Request $request */
$request = $this->container->get('request_stack')->getCurrentRequest();
//getFlashBag()->get('notice'
if ($message = $this->get('session')->getFlashBag()->get('sonata_flash_success')) {
$data['is_new_menu_item'] = $this->isNewMenuItem;
$data['status'] = 'success';
} elseif ($message = $this->get('session')->getFlashBag()->get('sonata_flash_error')) {
$data['status'] = 'error';
} elseif ($data['result'] == 'ok') {
$request->request->all();
$message = 'flash_' . str_replace('Action', '', $this->getCaller()) . '_success';
$data['is_new_menu_item'] = $this->isNewMenuItem;
if ($this->isNewMenuItem) {
$data['html'] = $this->placementAction();
}
$data['status'] = 'success';
} else {
$request->request->all();
$message = 'flash_' . str_replace('Action', '', $this->getCaller()) . '_error';
$data['status'] = 'error';
}
if ($message) {
$data['message'] = $this->admin->trans($message);
}
}
if (!array_key_exists('html', $data)) {
$data['html'] = $this->listAction($this->get('session')->get('admin/last_page_id'));
}
if ($response instanceof JsonResponse) {
$response->setData($data);
} else {
$response->setContent(json_encode($data));
}
return $response;
}