/** * Redirect the user depend on this choice * * @param object $object * @param Request $request * * @return RedirectResponse */ protected function redirectTo($object, Request $request = null) { $request = $this->resolveRequest($request); $url = false; if (null !== $request->get('btn_update_and_list')) { $url = $this->admin->generateUrl('list'); } if (null !== $request->get('btn_create_and_list')) { $url = $this->admin->generateUrl('list'); } if (null !== $request->get('btn_create_and_create')) { $params = array(); if ($this->admin->hasActiveSubClass()) { $params['subclass'] = $request->get('subclass'); } $url = $this->admin->generateUrl('create', $params); } if ($this->getRestMethod($request) == 'DELETE') { $url = $this->admin->generateUrl('list'); } if (!$url) { $url = $this->admin->generateObjectUrl('edit', $object); } return new RedirectResponse($url); }
/** * Redirect the user depend on this choice. * * @param object $object * * @return RedirectResponse */ protected function redirectTo($object) { $request = $this->getRequest(); $url = false; if (null !== $request->get('btn_update_and_list')) { $url = $this->admin->generateUrl('list'); } if (null !== $request->get('btn_create_and_list')) { $url = $this->admin->generateUrl('list'); } if (null !== $request->get('btn_create_and_create')) { $params = array(); if ($this->admin->hasActiveSubClass()) { $params['subclass'] = $request->get('subclass'); } $url = $this->admin->generateUrl('create', $params); } if ($this->getRestMethod() === 'DELETE') { $url = $this->admin->generateUrl('list'); } if (!$url) { foreach (array('edit', 'show') as $route) { if ($this->admin->hasRoute($route) && $this->admin->isGranted(strtoupper($route), $object)) { $url = $this->admin->generateObjectUrl($route, $object); break; } } } if (!$url) { $url = $this->admin->generateUrl('list'); } return new RedirectResponse($url); }
/** * Create action. * * @param Request $request * * @return Response * * @throws AccessDeniedException If access is not granted */ public function createAction() { $request = $this->getRequest(); // the key used to lookup the template $templateKey = 'edit'; $this->admin->checkAccess('create'); $class = new \ReflectionClass($this->admin->hasActiveSubClass() ? $this->admin->getActiveSubClass() : $this->admin->getClass()); if ($class->isAbstract()) { return $this->render('SonataAdminBundle:CRUD:select_subclass.html.twig', array('base_template' => $this->getBaseTemplate(), 'admin' => $this->admin, 'action' => 'create'), null, $request); } $object = $this->admin->getNewInstance(); $preResponse = $this->preCreate($request, $object); if ($preResponse !== null) { return $preResponse; } $this->admin->setSubject($object); /** @var $form \Symfony\Component\Form\Form */ $form = $this->admin->getForm(); $form->setData($object); $form->handleRequest($request); if ($form->isSubmitted()) { //TODO: remove this check for 3.0 if (method_exists($this->admin, 'preValidate')) { $this->admin->preValidate($object); } $isFormValid = $form->isValid(); // persist if the form was valid and if in preview mode the preview was approved if ($isFormValid && (!$this->isInPreviewMode($request) || $this->isPreviewApproved($request))) { $this->admin->checkAccess('create', $object); try { $object = $this->admin->create($object); if ($this->isXmlHttpRequest()) { return $this->renderJson(array('result' => 'ok', 'objectId' => $this->admin->getNormalizedIdentifier($object)), 200, array()); } $this->addFlash('sonata_flash_success', $this->admin->trans('flash_create_success', array('%name%' => $this->escapeHtml($this->admin->toString($object))), 'SonataAdminBundle')); // redirect to edit mode return $this->redirectTo($object); } catch (ModelManagerException $e) { $this->handleModelManagerException($e); $isFormValid = false; } } // show an error message if the form failed validation if (!$isFormValid) { if (!$this->isXmlHttpRequest()) { $this->addFlash('sonata_flash_error', $this->admin->trans('flash_create_error', array('%name%' => $this->escapeHtml($this->admin->toString($object))), 'SonataAdminBundle')); } } elseif ($this->isPreviewRequested()) { // pick the preview template if the form was valid and preview was requested $templateKey = 'preview'; $this->admin->getShow(); } } $view = $form->createView(); // set the theme for the current Admin Form $this->get('twig')->getExtension('form')->renderer->setTheme($view, $this->admin->getFormTheme()); return $this->render($this->admin->getTemplate($templateKey), array('action' => 'create', 'form' => $view, 'object' => $object), null); }
/** * redirect the user depend on this choice * * @param object $object * * @return Response */ public function redirectTo($object) { $url = false; if ($this->get('request')->get('btn_update_and_list')) { $url = $this->admin->generateUrl('list'); } if ($this->get('request')->get('btn_create_and_create')) { $params = array(); if ($this->admin->hasActiveSubClass()) { $params['subclass'] = $this->get('request')->get('subclass'); } $url = $this->admin->generateUrl('create', $params); } if (!$url) { $url = $this->admin->generateObjectUrl('edit', $object); } return new RedirectResponse($url); }