Symfony bundle to map request data to objects
Make sure Composer is installed globally, as explained in the installation chapter of the Composer documentation.
Open a command console, enter your project directory and execute:
$ composer require halloverden/request-mapping-bundle
Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
$ composer require halloverden/request-mapping-bundle
Then, enable the bundle by adding it to the list of registered bundles
in the config/bundles.php
file of your project:
// config/bundles.php
return [
// ...
HalloVerden\RequestMappingBundle\HalloVerdenRequestMappingBundle::class => ['all' => true],
];
- Create a handler that implements
RequestDataHandlerInterface
(or extendAbstractRequestDataHandler
) - Create a class that represents the payload, query or headers of the request
- Use
MapRequestPayload
,MapRequestQuery
orMapRequestHeaders
attribute on parameters into the controller.<?php namespace App\Controller; use App\Entity\Requests\TestRequest; use App\Entity\Response\TestResponse; use HalloVerden\RequestMappingBundle\Attribute\MapRequestPayload; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\Routing\Annotation\Route; #[Route(path: '/test2', name: 'testpost', methods: [Request::METHOD_POST])] class Test2Controller extends AbstractResponseEntityController { public function __invoke( #[MapRequestPayload(handler: 'your_handler')] TestRequestPayload $testRequestPayload ): JsonResponse { // Do something with $testRequestPayload return new JsonResponse(); } }