portrino/typo3-fractal-view

This package is abandoned and no longer maintained. No replacement package was suggested.

Integrates the fractal package (https://fractal.thephpleague.com/) into TYPO3 Extbase

0.2.0 2017-10-10 14:35 UTC

This package is auto-updated.

Last update: 2024-02-20 01:09:44 UTC


README

Build Status Code Climate Test Coverage Issue Count Latest Stable Version Total Downloads

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

  • André Wuttig - Initial work, Unit Tests - aWuttig
  • Christian Deussen - Bugfixes - nullsub

See also the list of contributors who participated in this project.