azjezz / input-hydrator-bundle
Hydrates input DTOs from request input.
Installs: 328
Dependents: 0
Suggesters: 0
Security: 0
Stars: 9
Watchers: 5
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=7.4
- azjezz/input-hydrator: ^1.0
- symfony/framework-bundle: ^4.4 || ^5.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- php-coveralls/php-coveralls: ^2.4
- phpunit/phpunit: ^9.4
- roave/security-advisories: dev-master
- squizlabs/php_codesniffer: ^3.5
- vimeo/psalm: ^4.1
This package is auto-updated.
Last update: 2024-10-29 05:47:28 UTC
README
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.