Blog 08.12.2021

TYPO3 v11 Response Interface

Wraz z wydaniem Typo3 v11 pojawiął się znacząca zmiana która dotyczy wszystkich pluginów wykorzystujących Controller Extbase. Każda akcja Extbase musi teraz zwracać Psr\Http\Message\ResponseInterface. 

Ta zmiana jest następstwem tego, że Core TYPO3 podąża nie tylko za PSR-7 ale także za PSR-17 

Poniiżej kilka przykładów. Zacznijmy od najbardziej popularnego. Nagłowek Content-Type: text/html oraz status 200 jako kod odpowiedzi

PHP
Copied!
public function listAction(): ResponseInterface
{
    $records = $this->newsRepository->findAll();
    $this->view->assign('records', $records);

    return $this->responseFactory->createResponse()
        ->withAddedHeader('Content-Type', 'text/html; charset=utf-8')
        ->withBody($this->streamFactory->createStream($this->view->render()));
}

Drugi przykład Content-Type: application/json oraz  status odpowiedzi 200 

PHP
Copied!
public function listApiAction(): ResponseInterface
{
    $records = $this->newsRepository->findAll();
    $this->view->assign('value', [
         'records' => $records
     ]);

    return $this->responseFactory
        ->createResponse()
        ->withHeader('Content-Type', 'application/json; charset=utf-8')
        ->withBody($this->streamFactory->createStream($this->view->render()));
}
O autorze
Krzysztof Napora
Krzysztof Napora
Krzysztof Napora