Skip to content

sfmok/request-input-bundle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RequestInputBundle

RequestInput bundle provides auto-transform request data into DTO input objects

  • Request data supported: json, xml and form
  • Resolve inputs arguments for controllers actions

Installation

Require the bundle with composer:

composer require sfmok/request-input-bundle

How to use

  • Create DTO input and implements Sfmok\RequestInput\InputInterface
use Sfmok\RequestInput\InputInterface;

class PostInput implements InputInterface
{
    /**
     * @Assert\NotBlank()
     */
    private string $title;

    /**
     * @Assert\NotBlank()
     */
    private string $content;

    /**
     * @Assert\NotBlank()
     */
    private array $tags = [];

    /**
     * @SerializedName('author')
     * @Assert\NotBlank()
     */
    private string $name;
    
    # getters and setters or make properties public
}
  • Use DTO input in your controller action as an argument:
class PostController
{
    /**
     * @Route("/posts", methods={"POST"})
     */
    public function create(PostInput $input): Response
    {
        # dump input
        dd($input);
        
        # set entity data and store
        $post = (new Post())
            ->setTitle($input->getTitle())
            ->setContent($input->getContent())
            ->setTags($input->getTags())
            ->setName($input->getName())
        ;
            
        $em->persist($post);
        $em->flush();
        
        ...
    }
}

Validations

  • Response header
Content-Type: application/problem+json; charset=utf-8
  • Response body
{
  "type": "https://symfony.com/errors/validation",
  "title": "Validation Failed",
  "detail": "title: This value should not be blank.",
  "violations": [
    {
      "propertyPath": "title",
      "title": "This value should not be blank.",
      "parameters": {
        "{{ value }}": "\"\""
      },
      "type": "urn:uuid:c1051bb4-d103-4f74-8988-acbcafc7fdc3"
    }
  ]
}

About

RequestInputBundle converts request data into DTO inputs objects with validation.

Topics

Resources

License

Stars

Watchers

Forks

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy