public function deleteAction($id)
{
/** @var Request $request */
$request = $this->get('request_stack')->getCurrentRequest();
$id = $this->get('request')->get($this->admin->getIdParameter());
$object = $this->admin->getObject($id);
if (!$object) {
throw new NotFoundHttpException(sprintf('unable to find the object with id : %s', $id));
}
if (false === $this->admin->isGranted('DELETE', $object)) {
throw new AccessDeniedException();
}
if ($request->get('subclass') && $request->get('subclass') == 'menu') {
if (false === $this->admin->isGranted('ROLE_SUPER_ADMIN')) {
throw new AccessDeniedException();
}
}
if ($request->getMethod() == 'DELETE') {
try {
$this->currentMenuLanguage = $object->getLocale();
$this->admin->delete($object);
if ($this->isXmlHttpRequest()) {
return $this->renderJson(array('result' => 'ok', 'objectId' => $this->admin->getNormalizedIdentifier($object), 'status' => 'success', 'message' => $this->admin->trans('flash_delete_success')));
} else {
$this->get('session')->getFlashBag()->add('sonata_flash_success', 'flash_delete_success');
}
} catch (ModelManagerException $e) {
if ($this->isXmlHttpRequest()) {
return $this->renderJson(array('result' => 'ok', 'objectId' => $this->admin->getNormalizedIdentifier($object), 'status' => 'error', 'message' => $this->admin->trans($e->getMessage())));
} else {
$this->get('session')->getFlashBag()->add('sonata_flash_error', 'flash_delete_error');
}
}
return new RedirectResponse($this->admin->generateUrl('list'));
}
return $this->render($this->admin->getTemplate('delete'), array('object' => $object, 'action' => 'delete'));
}