https://github.com/ivanstan/symfony-extend-request
https://github.com/ivanstan/symfony-extend-request
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/ivanstan/symfony-extend-request
- Owner: ivanstan
- Created: 2022-09-05T08:50:12.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2022-09-17T10:45:35.000Z (almost 4 years ago)
- Last Synced: 2025-06-25T19:02:58.486Z (about 1 year ago)
- Language: PHP
- Size: 24.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Symfony extend request
This bundle allows users to annotate the controller method type with class that
extends `Symfony\Component\HttpFoundation\Request` and implement custom logic inside child class.
## Example
```php
use App\Request\ExtendedRequest;
class ProductsController extends AbstractController {
#[Route('product/search')]
public function search(SearchProductsRequest $request): JsonResponse
{
return new JsonResponse([
'name' => $request->getName(),
]);
}
}
```
```php
namespace App\Request;
use Symfony\Component\HttpFoundation\Request;
class SearchProductsRequest extends Request
{
public function getName(): string
{
return $this->get('name');
}
}
```
## Installation
```bash
composer require ivanstan/symfony-extend-request
```
Add to your project's `bundle.php`:
```php
['all' => true],
];
```
## Requests as services
Classes extending `Symfony\Component\HttpFoundation\Request` can now be promoted to fully functional
Symfony services, with all of its dependency injection features. Since request constructor is dedicated for
query params, headers, etc. `Required` attribute is encouraged to inject other services in extended request class, for example:
```php
logger = $logger;
}
}
```
This will de-facto work if autowiring is enabled.
## Testing
Run: `composer test`
## Next development steps
- Support request validation in child classes.