/** * return the Response object associated to the edit action * * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException * * @param mixed $id * * @return \Symfony\Component\HttpFoundation\Response */ public function editAction($id = null) { $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('EDIT', $object)) { throw new AccessDeniedException(); } $this->admin->setSubject($object); $form = $this->admin->getForm(); $form->setData($object); if ($this->get('request')->getMethod() == 'POST') { $form->bindRequest($this->get('request')); if ($form->isValid()) { $this->admin->update($object); $this->get('session')->setFlash('sonata_flash_success', 'flash_edit_success'); if ($this->isXmlHttpRequest()) { return $this->renderJson(array('result' => 'ok', 'objectId' => $this->admin->getNormalizedIdentifier($object))); } // redirect to edit mode return $this->redirectTo($object); } $this->get('session')->setFlash('sonata_flash_error', 'flash_edit_error'); } $view = $form->createView(); // set the theme for the current Admin Form $this->get('twig')->getExtension('form')->setTheme($view, $this->admin->getFormTheme()); return $this->render($this->admin->getEditTemplate(), array('action' => 'edit', 'form' => $view, 'object' => $object)); }
/** * Edit action. * * @param int|string|null $id * * @return Response|RedirectResponse * * @throws NotFoundHttpException If the object does not exist * @throws AccessDeniedException If access is not granted */ public function editAction($id = null) { $request = $this->getRequest(); // the key used to lookup the template $templateKey = 'edit'; $id = $request->get($this->admin->getIdParameter()); $object = $this->admin->getObject($id); if (!$object) { throw $this->createNotFoundException(sprintf('unable to find the object with id : %s', $id)); } $this->admin->checkAccess('edit', $object); $preResponse = $this->preEdit($request, $object); if ($preResponse !== null) { return $preResponse; } $this->admin->setSubject($object); /** @var $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() || $this->isPreviewApproved())) { try { $object = $this->admin->update($object); if ($this->isXmlHttpRequest()) { return $this->renderJson(array('result' => 'ok', 'objectId' => $this->admin->getNormalizedIdentifier($object), 'objectName' => $this->escapeHtml($this->admin->toString($object))), 200, array()); } $this->addFlash('sonata_flash_success', $this->admin->trans('flash_edit_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; } catch (LockException $e) { $this->addFlash('sonata_flash_error', $this->admin->trans('flash_lock_error', array('%name%' => $this->escapeHtml($this->admin->toString($object)), '%link_start%' => '<a href="' . $this->admin->generateObjectUrl('edit', $object) . '">', '%link_end%' => '</a>'), 'SonataAdminBundle')); } } // show an error message if the form failed validation if (!$isFormValid) { if (!$this->isXmlHttpRequest()) { $this->addFlash('sonata_flash_error', $this->admin->trans('flash_edit_error', array('%name%' => $this->escapeHtml($this->admin->toString($object))), 'SonataAdminBundle')); } } elseif ($this->isPreviewRequested()) { // enable 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' => 'edit', 'form' => $view, 'object' => $object), null); }
/** * Edit action * * @param int|string|null $id * @param Request $request * * @return Response|RedirectResponse * * @throws NotFoundHttpException If the object does not exist * @throws AccessDeniedException If access is not granted */ public function editAction($id = null, Request $request = null) { $request = $this->resolveRequest($request); // the key used to lookup the template $templateKey = 'edit'; $id = $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('EDIT', $object)) { throw new AccessDeniedException(); } $preResponse = $this->preEdit($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()) { $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))) { try { $object = $this->admin->update($object); if ($this->isXmlHttpRequest($request)) { return $this->renderJson(array('result' => 'ok', 'objectId' => $this->admin->getNormalizedIdentifier($object)), 200, array(), $request); } $this->addFlash('sonata_flash_success', $this->admin->trans('flash_edit_success', array('%name%' => $this->escapeHtml($this->admin->toString($object))), 'SonataAdminBundle')); // redirect to edit mode return $this->redirectTo($object, $request); } catch (ModelManagerException $e) { $this->handleModelManagerException($e); $isFormValid = false; } } // show an error message if the form failed validation if (!$isFormValid) { if (!$this->isXmlHttpRequest($request)) { $this->addFlash('sonata_flash_error', $this->admin->trans('flash_edit_error', array('%name%' => $this->escapeHtml($this->admin->toString($object))), 'SonataAdminBundle')); } } elseif ($this->isPreviewRequested($request)) { // enable 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' => 'edit', 'form' => $view, 'object' => $object), null, $request); }
/** * return the Response object associated to the edit action * * * @param mixed $id * * @throws \Symfony\Component\Security\Core\Exception\AccessDeniedException * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException * * @return Response */ public function editAction($id = null) { // the key used to lookup the template $templateKey = 'edit'; $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('EDIT', $object)) { throw new AccessDeniedException(); } $this->admin->setSubject($object); /** @var $form \Symfony\Component\Form\Form */ $form = $this->admin->getForm(); $form->setData($object); if ($this->get('request')->getMethod() == 'POST') { $form->bindRequest($this->get('request')); $isFormValid = $form->isValid(); // persist if the form was valid and if in preview mode the preview was approved if ($isFormValid && (!$this->isInPreviewMode() || $this->isPreviewApproved())) { $this->admin->update($object); $this->get('session')->setFlash('sonata_flash_success', 'flash_edit_success'); if ($this->isXmlHttpRequest()) { return $this->renderJson(array('result' => 'ok', 'objectId' => $this->admin->getNormalizedIdentifier($object))); } // redirect to edit mode return $this->redirectTo($object); } // show an error message if the form failed validation if (!$isFormValid) { $this->get('session')->setFlash('sonata_flash_error', 'flash_edit_error'); } elseif ($this->isPreviewRequested()) { // enable the preview template if the form was valid and preview was requested $templateKey = 'preview'; } } $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' => 'edit', 'form' => $view, 'object' => $object)); }
/** * return the Response object associated to the edit action * * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException * @param $id * @return \Symfony\Component\HttpFoundation\Response */ public function editAction($id) { $object = $this->admin->getObject($this->get('request')->get($this->admin->getIdParameter())); if (!$object) { throw new NotFoundHttpException(sprintf('unable to find the object with id : %s', $id)); } $this->admin->setSubject($object); $form = $this->admin->getForm($object); if ($this->get('request')->getMethod() == 'POST') { $form->bindRequest($this->get('request')); if ($form->isValid()) { $this->admin->update($object); if ($this->isXmlHttpRequest()) { return $this->renderJson(array('result' => 'ok', 'objectId' => $object->getId())); } // redirect to edit mode return $this->redirectTo($object); } } return $this->render($this->admin->getEditTemplate(), array('action' => 'edit', 'form' => $form->createView(), 'object' => $object, 'admin' => $this->admin, 'base_template' => $this->getBaseTemplate())); }