evyex / symfony-extender
Symfony bundle to must have features
Package info
github.com/evyex/symfony-extender
Type:symfony-bundle
pkg:composer/evyex/symfony-extender
Requires
- php: ^8.4
- doctrine/orm: ^3.5.4
- symfony/config: ^8.0
- symfony/dependency-injection: ^8.0
- symfony/expression-language: ^8.0
- symfony/http-kernel: ^8.0
- symfony/property-access: ^8.0
- symfony/property-info: ^8.0
- symfony/security-core: ^8.0
- symfony/security-http: ^8.0
- symfony/serializer: ^8.0
- symfony/validator: ^8.0
Requires (Dev)
- doctrine/doctrine-bundle: ^3.1
- friendsofphp/php-cs-fixer: ^3.92
- phpstan/phpstan: ^2.1
- phpunit/phpunit: >=12
- symfony/framework-bundle: ^8.0
- symfony/security-bundle: ^8.0
- symfony/var-exporter: ^8.0
- dev-symfony-7.4
- dev-main
- 8.0.1
- 8.0.0
- 7.4.1
- 7.4.0
- 6.4.1
- 6.4.0
- 0.5.6
- 0.5.5
- 0.5.4
- 0.5.3
- 0.5.2
- 0.5.1
- 0.5
- 0.4.4
- 0.4.3
- 0.4.2
- 0.4.1
- 0.4
- 0.3
- 0.2
- 0.1.1
- 0.1
- dev-symfony-8.0
- dev-resolve
- dev-symfony-6.4
- dev-is-granted-fix
- dev-add-config-entity-collection-8.0
- dev-add-config-entity-collection-7.4
- dev-add-config-entity-collection
- dev-internal-test
This package is auto-updated.
Last update: 2026-04-17 12:27:51 UTC
README
A Symfony bundle that provides commonly used features and utilities to enhance your development workflow.
Installation
Install the bundle using Composer:
composer require evyex/symfony-extender
The bundle should be automatically registered by Symfony Flex. If not, add it to your config/bundles.php:
return [ // ... Evyex\SymfonyExtender\SymfonyExtenderBundle::class => ['all' => true], ];
Configuration
You can configure the bundle in config/packages/symfony_extender.yaml:
symfony_extender: entity_collection: default_limit: 20 # Default paginator limit when no explicit limit is provided (min: 1) is_granted_listener: enabled: true # Set to false to disable grant execution after Map** resolving
Features
1. Phone Number Validator
A simple validator for international phone numbers. It allows digits, spaces, hyphens, and parentheses, but ensures the underlying value follows a valid international format (e.g., +1234567890).
Usage:
use Evyex\SymfonyExtender\Validator\PhoneNumber; class UserDTO { #[PhoneNumber(message: 'Please provide a valid phone number.')] public string $phone; }
2. MapEntityCollection Value Resolver
Automatically resolves a collection of entities from request query parameters. This is highly useful for list endpoints with filtering, ordering, and pagination support.
Detailed documentation: MapEntityCollection.md.
Usage in Controller:
use Evyex\SymfonyExtender\ValueResolver\MapEntityCollection\MapEntityCollection; use App\Entity\Product; use Doctrine\ORM\Tools\Pagination\Paginator; #[Route('/products', methods: ['GET'])] public function list( #[MapEntityCollection( class: Product::class, defaultOrdering: ['createdAt' => 'DESC'] )] Paginator $products ): Response { // ... }
3. IsGranted Attribute Decorator
Decorates the default Symfony controller.is_granted_attribute_listener to ensure it runs at the correct priority when used with other argument resolvers.
This works transparently in the background, ensuring that #[IsGranted] attributes on controller arguments are handled correctly before the value resolvers are called.
Can be disabled via configuration if the decorator conflicts with your setup (see Configuration).
Quality Assurance
The project maintains high code quality standards:
- Static Analysis: PHPStan
- Coding Style: PHP-CS-Fixer
- Testing: PHPUnit
License
The MIT License (MIT). Please see License File for more information.