PHPackages                             fenix007/request-dto-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. fenix007/request-dto-bundle

ActiveSymfony-bundle[HTTP &amp; Networking](/categories/http)

fenix007/request-dto-bundle
===========================

This Symfony Bundle provides request objects support for Symfony controller actions

1.2.2(4y ago)08MITPHPPHP ^7.4 | ^8.0

Since May 26Pushed 4y agoCompare

[ Source](https://github.com/fenix007/RequestDtoBundle)[ Packagist](https://packagist.org/packages/fenix007/request-dto-bundle)[ RSS](/packages/fenix007-request-dto-bundle/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (10)Versions (8)Used By (0)

[![RequestDtoBundle](logo.svg)](logo.svg)
=========================================

[](#)

RequestDtoBundle
================

[](#requestdtobundle)

This Symfony Bundle provides request objects support for Symfony controller actions.

[![Packagist Version](https://camo.githubusercontent.com/28ca017dc5783d8674766aee40067b49ba0e384c44d5e6a95fd5f459f5474906/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6e656c6578612f726571756573742d64746f2d62756e646c65)](https://packagist.org/packages/nelexa/request-dto-bundle)[![Packagist PHP Version Support](https://camo.githubusercontent.com/4311ba23bd7835387bfce0c76816f4c941a2957f663a5817b6e4b3d308927664/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f6e656c6578612f726571756573742d64746f2d62756e646c65)](https://packagist.org/packages/nelexa/request-dto-bundle)[![Minimum Symfony Version](https://camo.githubusercontent.com/8f312b91e6dfa8dfa92b783539e7bc68ee43987012ce5dc9bc6ec69a9271468a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f42756e646c65253230666f7225323053796d666f6e792d253545352e302d626c7565)](https://camo.githubusercontent.com/8f312b91e6dfa8dfa92b783539e7bc68ee43987012ce5dc9bc6ec69a9271468a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f42756e646c65253230666f7225323053796d666f6e792d253545352e302d626c7565)[![Build Status](https://github.com/Ne-Lexa/RequestDtoBundle/workflows/build/badge.svg)](https://github.com/Ne-Lexa/RequestDtoBundle/actions)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/d86748cb082e4950afd44402a6540766ce451e2da29dfe61498c7af45c73697b/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f4e652d4c6578612f5265717565737444746f42756e646c652f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/Ne-Lexa/RequestDtoBundle/?branch=master)[![Code Coverage](https://camo.githubusercontent.com/718b44848ff66b8b9f26f39180825994fdf65194d45740bdd17a3e658ffb020c/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f4e652d4c6578612f5265717565737444746f42756e646c652f6261646765732f636f7665726167652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/Ne-Lexa/RequestDtoBundle/?branch=master)[![Packagist License](https://camo.githubusercontent.com/10e806141b613a8483d8a6ca69be85d5ea4f0a9e57adc428d1687f3eb8ec492b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6e656c6578612f726571756573742d64746f2d62756e646c65)](https://github.com/Ne-Lexa/RequestDtoBundle/blob/master/LICENSE)

Installation
============

[](#installation)

Require the bundle with composer:

```
composer require nelexa/request-dto-bundle
```

Examples of using
=================

[](#examples-of-using)

To specify an object as an argument of a controller action, an object must implement one of 4 interfaces:

- `\Nelexa\RequestDtoBundle\Dto\QueryObjectInterface` query parameters for GET or HEAD request methods.
- `\Nelexa\RequestDtoBundle\Dto\RequestObjectInterface` request parameters for POST, PUT or DELETE request methods (ex. Content-Type: application/x-www-form-urlencoded) or query parameters for GET and HEAD request methods.
- `\Nelexa\RequestDtoBundle\Dto\RequestBodyObjectInterface` for POST, PUT, DELETE request body contents (ex. Content-Type: application/json).
- `\Nelexa\RequestDtoBundle\Dto\ConstructRequestObjectInterface` for mapping a request for a data transfer object in the class constructor.

Create request DTO:

```
use Nelexa\RequestDtoBundle\Dto\RequestObjectInterface;
use Symfony\Component\Validator\Constraints as Assert;

class UserRegistrationRequest implements RequestObjectInterface
{
    /** @Assert\NotBlank() */
    public ?string $login = null;

    /**
     * @Assert\NotBlank()
     * @Assert\Length(min="6")
     */
    public ?string $password = null;

    /**
     * @Assert\NotBlank()
     * @Assert\Email()
     */
    public ?string $email = null;
}
```

Use in the controller:

```
