Integrates the fractal package (https://fractal.thephpleague.com/) into TYPO3 Extbase
You need to add the repository into your composer.json file
composer require portrino/typo3-fractal-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)
];
}
}
See also the list of contributors who participated in this project.