Responses

Introduction

Prest is designed to work with Fractal’s Transformer concept to handle complex data output. Extending your custom controller from Prest\Mvc\Controllers\FractalController provides you with several methods for creating different responses.

FractalController

createResponse

By default createResponse takes $response as argument and returns it. Overriding this method allows you to modify the response before it will be send:

namespace Acme\Controllers;

use Prest\Mvc\Controllers\FractalController;

class CustomController extends FractalController
{
    public function createResponse($response)
    {
        if (/* some business related condition */) {
            return $response;
        }

        return null;
    }
}

createArrayResponse

Let’s say you want to return just an array with data, for instance an array with your session token:

namespace Acme\Controllers;

use Prest\Mvc\Controllers\FractalController;

class CustomController extends FractalController
{
    public function authenticate()
    {
        // Some authentication code here

        // We've successfully created a session
        return $this->createArrayResponse([
            'token'   => $session->getToken(),
            'expires' => $session->getExpirationTime(),
        ]);
    }
}

Response:

{
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ1c2VybmFtZSIsInN1YiI6IjEiLCJpYXQiOjE0NDk3NTY4MDAsImV4cCI6MjkwMDExODQwMH0.FE8VYcuh68fxqH17AjILWgcIrOkDp9Q6fBPneD_W4Rc",
    "expires": 1450361600
}

createOkResponse

You might want to send just an OK response, for instance when you’ve successfully deleted something:

namespace Acme\Controllers;

use Prest\Mvc\Controllers\FractalController;

class CustomController extends FractalController
{
    public function delete($identity)
    {
        // Some business logic here

        return $this->createOkResponse();
    }
}

Response:

{
    "result": "OK"
}

createItemOkResponse

Send OK along with item response. Example:

namespace Acme\Controllers;

use Acme\Transformer\ItemTransformer;
use Prest\Mvc\Controllers\FractalController;

class CustomController extends FractalController
{
    public function find($identity)
    {
        // Some business logic here

        return $this->createItemOkResponse($item, new ItemTransformer(), 'item');
    }
}

Response:

{
    "result": "OK",
    "item": {

    }
}

createItemResponse

Creates a Fractal Item response. Example:

namespace Acme\Controllers;

use Acme\Transformer\ItemTransformer;
use Prest\Mvc\Controllers\FractalController;

class CustomController extends FractalController
{
    public function find($identity)
    {
        // Some business logic here

        return $this->createItemResponse($item, new ItemTransformer(), 'item');
    }
}

Response:

{
    "item": {

    }
}

createCollectionResponse

Creates a Fractal Collection response. Example:

namespace Acme\Controllers;

use Acme\Transformer\ItemTransformer;
use Prest\Mvc\Controllers\FractalController;

class CustomController extends FractalController
{
    public function all()
    {
        // Some business logic here

        return $this->createCollectionResponse($items, new ItemTransformer(), 'items');
    }
}

Response:

{
    "items": [{

    }, {

    }]
}

results matching ""

    No results matching ""