How to get JSON API to TYPO3 Fluid ViewHelper?

Heutzutage ist ein Headless CMS-Ansatz im Trend. Die Leute lieben es, APIs basierte Webseiten und Webapps zu erstellen. Stellen Sie sich eine Situation vor, in der Sie JSON-API-Daten in Ihr TYPO3 Fluid einlesen müssen.

Hier ist das TYPO3 Code-Snippet, um JSON API Daten in Ihr TYPO3 CMS zu bekommen, indem Sie den TYPO3 Fluid ViewHelper benutzen.

Aufruf von benutzerdefiniertem TYPO3 JSON an Fluid ViewHelper

 


{namespace n=Vendor\Package\ViewHelpers}

 

Benutzerdefinierten TYPO3 JsonToFluidViewHelper vorbereiten

 


namespace Vendor\Package\ViewHelpers;

use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
use TYPO3\CMS\Core\Http\RequestFactory;
use TYPO3\CMS\Core\Utility\GeneralUtility;


/**
 * renders the header of the results page
 * @internal
 */
class JsonToFluidViewHelper extends AbstractViewHelper
{
    use CompileWithRenderStatic;

    /**
     * As this ViewHelper renders HTML, the output must not be escaped.
     *
     * @var bool
     */
    protected $escapeOutput = false;

    /**
     * Initialize arguments
     */
    public function initializeArguments()
    {
        $this->registerArgument('api', 'string', '', true);
    }

    /**
     * @param array $arguments
     * @param callable|\Closure $renderChildrenClosure
     * @param RenderingContextInterface $renderingContext
     * @return array
     */
    public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext)
    {
        $api = $arguments['api'];
        $req = GeneralUtility::makeInstance(RequestFactory::class);
        $response = $req->request($api,'GET',[]);
        $rawResponse = $response->getBody()->getContents();
        return json_decode($rawResponse, true);
    }
}

Post a Comment

×
Captcha Code Kann das Bild nicht gelesen werden? Klicken Sie hier, um zu aktualisieren

Got answer to the question you were looking for?