src/Controller/CRUDController.php
public function historyCompareRevisionsAction($id = null, $base_revision = null, $compare_revision = null)
    {
        $request = $this->getRequest();

        $this->admin->checkAccess('historyCompareRevisions');

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

        $manager = $this->get('sonata.admin.audit.manager');

        if (!$manager->hasReader($this->admin->getClass())) {
            throw $this->createNotFoundException(
                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 $this->createNotFoundException(
                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 $this->createNotFoundException(
                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);

        // NEXT_MAJOR: Remove this line and use commented line below it instead
        $template = $this->admin->getTemplate('show_compare');
        // $template = $this->templateRegistry->getTemplate('show_compare');

        return $this->renderWithExtraParams($template, [
            'action' => 'show',
            'object' => $base_object,
            'object_compare' => $compare_object,
            'elements' => $this->admin->getShow(),
        ], null);
    }
public function historyCompareRevisionsAction($id = null, $base_revision = null, $compare_revision = null)
    {
        $request = $this->getRequest();

        $this->admin->checkAccess('historyCompareRevisions');

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

        $manager = $this->get('sonata.admin.audit.manager');

        if (!$manager->hasReader($this->admin->getClass())) {
            throw $this->createNotFoundException(
                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 $this->createNotFoundException(
                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 $this->createNotFoundException(
                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);

        // NEXT_MAJOR: Remove this line and use commented line below it instead
        $template = $this->admin->getTemplate('show_compare');
        // $template = $this->templateRegistry->getTemplate('show_compare');

        return $this->renderWithExtraParams($template, [
            'action' => 'show',
            'object' => $base_object,
            'object_compare' => $compare_object,
            'elements' => $this->admin->getShow(),
        ], null);
    }
public function historyCompareRevisionsAction ( $ id = null , $ base_revision = null , $ compare_revision = null ) { $ request = $ this -> getRequest ( ) ; $ this -> admin -> checkAccess ( 'historyCompareRevisions' ) ; $ 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 ) ) ; } $ manager = $ this -> get ( 'sonata.admin.audit.manager' ) ; if ( ! $ manager -> hasReader ( $ this -> admin -> getClass ( ) ) ) { throw $ this -> createNotFoundException ( 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 $ this -> createNotFoundException ( 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 $ this -> createNotFoundException ( 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 ) ; // NEXT_MAJOR: Remove this line and use commented line below it instead $ template = $ this -> admin -> getTemplate ( 'show_compare' ) ; // $template = $this->templateRegistry->getTemplate('show_compare'); return $ this -> renderWithExtraParams ( $ template , [ 'action' => 'show' , 'object' => $ base_object , 'object_compare' => $ compare_object , 'elements' => $ this -> admin -> getShow ( ) , ] , null ) ; }
Compare history revisions of object.

@param int|string|null $id
@param int|string|null $base_revision
@param int|string|null $compare_revision

@throws AccessDeniedException If access is not granted
@throws NotFoundHttpException If the object or revision does not exist or the audit reader is not available

@return Response
Compare history revisions of object .