示例#1
0
 /**
  * Compare history revisions of object.
  *
  * @param int|string|null $id
  * @param int|string|null $base_revision
  * @param int|string|null $compare_revision
  *
  * @return Response
  *
  * @throws AccessDeniedException If access is not granted
  * @throws NotFoundHttpException If the object or revision does not exist or the audit reader is not available
  */
 public function historyCompareRevisionsAction($id = null, $base_revision = null, $compare_revision = null)
 {
     if (false === $this->admin->isGranted('EDIT')) {
         throw new AccessDeniedException();
     }
     $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));
     }
     $manager = $this->get('sonata.admin.audit.manager');
     if (!$manager->hasReader($this->admin->getClass())) {
         throw new NotFoundHttpException(sprintf('unable to find the audit reader for class : %s', $this->admin->getClass()));
     }
     $reader = $manager->getReader($this->admin->getClass());
     // retrieve the base revision
     $base_object = $reader->find($this->admin->getClass(), $id, $base_revision);
     if (!$base_object) {
         throw new NotFoundHttpException(sprintf('unable to find the targeted object `%s` from the revision `%s` with classname : `%s`', $id, $base_revision, $this->admin->getClass()));
     }
     // retrieve the compare revision
     $compare_object = $reader->find($this->admin->getClass(), $id, $compare_revision);
     if (!$compare_object) {
         throw new NotFoundHttpException(sprintf('unable to find the targeted object `%s` from the revision `%s` with classname : `%s`', $id, $compare_revision, $this->admin->getClass()));
     }
     $this->admin->setSubject($base_object);
     return $this->render($this->admin->getTemplate('show_compare'), array('action' => 'show', 'object' => $base_object, 'object_compare' => $compare_object, 'elements' => $this->admin->getShow()));
 }
    /**
     * return the Response object associated to the view action
     *
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function showAction($id)
    {
        if (false === $this->admin->isGranted('SHOW')) {
            throw new AccessDeniedException();
        }

        $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);

        // build the show list
        $elements = $this->admin->getShow();

        return $this->render($this->admin->getShowTemplate(), array(
            'action'         => 'show',
            'object'         => $object,
            'elements'       => $this->admin->getShow(),
            'admin'          => $this->admin,
            'base_template'  => $this->getBaseTemplate(),
        ));
    }