netmex/request-bundle

Installs: 20

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

Type:symfony-bundle

2.2.2 2025-06-11 05:41 UTC

This package is not auto-updated.

Last update: 2025-06-11 07:26:06 UTC


README

Installation

composer require netmex/request-bundle

Usage

To use the RequestBundle, create a DTO class that extends Netmex\RequestBundle\Request\AbstractRequest. You can use Symfony’s #[Assert\...] attributes to define validation rules per property.

Example DTO
<?php

namespace App\Request;

use Netmex\RequestBundle\Request\AbstractRequest;
use Symfony\Component\Validator\Constraints as Assert;

class CustomRequest extends AbstractRequest
{
    #[Assert\NotBlank()]
    public string $exampleField;
}

Injecting the DTO into a Controller

<?php

namespace App\Controller;

use App\DTO\CustomRequest;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class ExampleController
{
    #[Route('/example', name: 'app_example')]
    public function index(CustomRequest $request): Response
    {
        // Validated and sanitized content
        $results = $request->content();

        return new Response($results);
    }
}

Accessing Fields

All fields

Use content() to retrieve all fields.

$request->content();
Single field

You can also fetch a single field using the get(string $key, ?string $default = null): Parameter.

// Raw value (with optional fallback)
$request->get('fieldName', 'default');

Recommended Directory Layout

src/
├── Request/
│   └── YourDTO.php
└── Controller/
    └── YourController.php

Exception Handling

try {
    $data = $request->getContent()->validate();
} catch (ValidationFailedException $e) {
    return new JsonResponse(['errors' => (string) $e->getViolations()], 400);
}

More about Constraints

See Symfony Validation Constraints for available options.