public function apiSaveForm(HTTPRequest $request)
    {
        // Validate required input data
        if (!isset($this->urlParams['ID'])) {
            $this->jsonError(400);
            return null;
        }

        $data = Convert::json2array($request->getBody());
        if (empty($data)) {
            $this->jsonError(400);
            return null;
        }

        // Inject request body as request vars
        foreach ($data as $key => $value) {
            $request->offsetSet($key, $value);
        }

        // Check security token
        if (!SecurityToken::inst()->checkRequest($request)) {
            $this->jsonError(400);
            return null;
        }

        /** @var BaseElement $element */
        $element = BaseElement::get()->byID($this->urlParams['ID']);
        // Ensure the element can be edited by the current user
        if (!$element || !$element->canEdit()) {
            $this->jsonError(403);
            return null;
        }

        // Remove the pseudo namespaces that were added by the form factory
        $data = $this->removeNamespacesFromFields($data, $element->ID);

        try {
            $updated = false;

            $element->updateFromFormData($data);
            // Check if anything will actually be changed before writing
            if ($element->isChanged()) {
                $element->write();
                // Track changes so we can return to the client
                $updated = true;
            }
        } catch (Exception $ex) {
            Injector::inst()->get(LoggerInterface::class)->debug($ex->getMessage());

            $this->jsonError(500);
            return null;
        }

        $body = Convert::raw2json([
            'status' => 'success',
            'updated' => $updated,
        ]);
        return HTTPResponse::create($body)->addHeader('Content-Type', 'application/json');
    }
public function apiSaveForm(HTTPRequest $request)
    {
        // Validate required input data
        if (!isset($this->urlParams['ID'])) {
            $this->jsonError(400);
            return null;
        }

        $data = Convert::json2array($request->getBody());
        if (empty($data)) {
            $this->jsonError(400);
            return null;
        }

        // Inject request body as request vars
        foreach ($data as $key => $value) {
            $request->offsetSet($key, $value);
        }

        // Check security token
        if (!SecurityToken::inst()->checkRequest($request)) {
            $this->jsonError(400);
            return null;
        }

        /** @var BaseElement $element */
        $element = BaseElement::get()->byID($this->urlParams['ID']);
        // Ensure the element can be edited by the current user
        if (!$element || !$element->canEdit()) {
            $this->jsonError(403);
            return null;
        }

        // Remove the pseudo namespaces that were added by the form factory
        $data = $this->removeNamespacesFromFields($data, $element->ID);

        try {
            $updated = false;

            $element->updateFromFormData($data);
            // Check if anything will actually be changed before writing
            if ($element->isChanged()) {
                $element->write();
                // Track changes so we can return to the client
                $updated = true;
            }
        } catch (Exception $ex) {
            Injector::inst()->get(LoggerInterface::class)->debug($ex->getMessage());

            $this->jsonError(500);
            return null;
        }

        $body = Convert::raw2json([
            'status' => 'success',
            'updated' => $updated,
        ]);
        return HTTPResponse::create($body)->addHeader('Content-Type', 'application/json');
    }
public function apiSaveForm ( HTTPRequest $ request ) { // Validate required input data if ( ! isset ( $ this -> urlParams [ 'ID' ] ) ) { $ this -> jsonError ( 400 ) ; return null ; } $ data = Convert :: json2array ( $ request -> getBody ( ) ) ; if ( empty ( $ data ) ) { $ this -> jsonError ( 400 ) ; return null ; } // Inject request body as request vars foreach ( $ data as $ key => $ value ) { $ request -> offsetSet ( $ key , $ value ) ; } // Check security token if ( ! SecurityToken :: inst ( ) -> checkRequest ( $ request ) ) { $ this -> jsonError ( 400 ) ; return null ; } /** @var BaseElement $element */ $ element = BaseElement :: get ( ) -> byID ( $ this -> urlParams [ 'ID' ] ) ; // Ensure the element can be edited by the current user if ( ! $ element || ! $ element -> canEdit ( ) ) { $ this -> jsonError ( 403 ) ; return null ; } // Remove the pseudo namespaces that were added by the form factory $ data = $ this -> removeNamespacesFromFields ( $ data , $ element -> ID ) ; try { $ updated = false ; $ element -> updateFromFormData ( $ data ) ; // Check if anything will actually be changed before writing if ( $ element -> isChanged ( ) ) { $ element -> write ( ) ; // Track changes so we can return to the client $ updated = true ; } } catch ( Exception $ ex ) { Injector :: inst ( ) -> get ( LoggerInterface :: class ) -> debug ( $ ex -> getMessage ( ) ) ; $ this -> jsonError ( 500 ) ; return null ; } $ body = Convert :: raw2json ( [ 'status' => 'success' , 'updated' => $ updated , ] ) ; return HTTPResponse :: create ( $ body ) -> addHeader ( 'Content-Type' , 'application/json' ) ; }
Save an inline edit form for a block

@param HTTPRequest $request
@return HTTPResponse|null JSON encoded string or null if an exception is thrown
@throws HTTPResponse_Exception
Save an inline edit form for a block