azjezz/input-hydrator-bundle

Hydrates input DTOs from request input.

Installs: 327

Dependents: 0

Suggesters: 0

Security: 0

Stars: 9

Watchers: 5

Forks: 0

Open Issues: 0

Type:symfony-bundle

1.0.2 2020-11-01 12:12 UTC

This package is auto-updated.

Last update: 2024-02-29 04:12:27 UTC


README

Unit tests status Static analysis status Security analysis status Coding standards status TravisCI Build Status Coverage Status Type Coverage Total Downloads Latest Stable Version License

About

InputHydratorBundle provides a Symfony Bundle for azjezz/input-hydrator package.

Installation

To install the bundle, run the command below and you will get the latest version:

$ composer require azjezz/input-hydrator-bundle

Configuration

Configuring the input hydrator bundle is pretty straight forward, all you need to do is add the bundle to your config/bundles.php:

Note: this will be done for you automatically if you have symfony/flex installed.

// config/bundles.php
<?php

return [
    Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
    ...
    AzJezz\Input\HydratorBundle\InputHydratorBundle::class => ['all' => true],
];

That's it.

Usage

To use the input hydrator, you first need to create your input DTO class.

for example:

// src/Input/Search.php
<?php

declare(strict_types=1);

namespace App\Input;

use AzJezz\Input\InputInterface;

final class Search implements InputInterface
{
    public string $query;
}

later you can request the DTO as a parameter in your controller:

// src/Controller/SearchController.php
<?php

declare(strict_types=1);

namespace App\Controller;

use App\Input\Search;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

final class SearchController
{
    /**
     * @Route("/search", methods={"GET"})
     */
    public function index(Search $search): Response
    {
        return new Response('You were looking for "'.$search->query.'"?');
    }
}

Using Symfony's argument resolver, the bundle is able to hydrate the Search DTO and pass it on to your controller.

In case the request doesn't specify the query field, or query contains another type ( e.g. array ), the argument resolver will throw BadRequestHttpException which will result in a 400 Bad Request response.

License

The MIT License (MIT). Please see LICENSE for more information.