Skip to content
This repository has been archived by the owner on Jan 30, 2024. It is now read-only.

portrino/typo3-fractal-view

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TYPO3 Fractal View

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.

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages