portrino / typo3-fractal-view
Integrates the fractal package (https://fractal.thephpleague.com/) into TYPO3 Extbase
Requires
- php: >=5.5.0
- league/fractal: ~0.17.0
- typo3/cms: ^7.6 || ^8.7
Requires (Dev)
- phpunit/phpunit: ^4.8
- squizlabs/php_codesniffer: ~3.0.2
This package is auto-updated.
Last update: 2024-02-20 01:09:44 UTC
README
Integrates the fractal package (https://fractal.thephpleague.com/) into TYPO3 Extbase
Installation
You need to add the repository into your composer.json file
composer require portrino/typo3-fractal-view
Extbase view
You can prepend ?tx_par_pi1[format]=json
to your action controller request and extbase
renders the corresponding view for you. By putting the FractalView class into the $viewFormatToObjectNameMap
or
$defaultViewObjectName
extbase is able to get the correct view class for your request.
use Portrino\Typo3FractalView\Mvc\View\FractalView; use Foo\Bar\Transformer\BookingTransformer; class BookingController { /** * @var array */ protected $viewFormatToObjectNameMap = [ 'json' => FractalView::class ]; /** * @var string */ protected $defaultViewObjectName = FractalView::class; /** * Action Show * * @param \Foo\Bar\Domain\Model\Booking $booking * * @return void */ public function showAction($booking) { $this->view->assign('booking', $booking); $view->setConfiguration([ 'booking' => BookingTransformer::class ]); $this->view->setVariablesToRender(['booking']); } }
The only thing you have to do is implement the BookingTransformer
class by your own like described here: https://fractal.thephpleague.com/transformers/
Example:
namespace Foo\Bar\Transformer; use Foo\Bar\Domain\Model\Booking; class BookingTransformer { /** * @param Booking $booking * @return array */ public function transform(Booking $booking) { return [ 'uid' => $booking->getUid(), 'start' => $booking->getStart()->format(DateTime::ISO8601), 'end' => $booking->getEnd()->format(DateTime::ISO8601) ]; } }
Authors
See also the list of contributors who participated in this project.