nebkam / symfony-traits
Helper trait to ease writing APIs in Symfony
Installs: 3 530
Dependents: 0
Suggesters: 0
Security: 0
Stars: 16
Watchers: 3
Forks: 2
Open Issues: 0
Requires
- ext-json: *
- symfony/form: 5.* || 6.* || 7.*
- symfony/http-foundation: 5.* || 6.* || 7.*
- symfony/http-kernel: 5.* || 6.* || 7.*
- symfony/validator: 5.* || 6.* || 7.*
Requires (Dev)
- symfony/framework-bundle: 5.* || 6.* || 7.*
- symfony/phpunit-bridge: 5.* || 6.* || 7.*
README
Symfony Traits
Few helper traits for quicker API development in Symfony
FormTrait
handleJSONForm
- controller helper method for JSON data sent in
POST
,PUT
orPATCH
request content - generally speaking, sending JSON content is more flexible than forms, for CRUD with JS frameworks.
public function create(Request $request) { $entity = new Entity(); $this->handleJSONForm($request, $entity, EntityType::class, $options = [], $clearMissingFields = true); // persist and flush $entity
public function edit(Request $request,Entity $entity) { $this->handleJSONForm($request, $entity, EntityType::class, $options = [], $clearMissingFields = true); // flush entity
handleForm
- controller helper method for traditional form data in
GET
orPOST
- I advice using traditional form data only when JSON is out of place (i.e.
GET
params)
public function example(Request $request) { $domain = new Domain(); if ($request->query->count() > 0) { $this->handleForm($request, $params, DomainType::class, $options = [], $clearMissingFields = true); } // do something with $domain
handleUpload
- controller helper method to validate a single file upload
- a lightweight alternative to a File constraint, when you need just one file, not the whole form
public function uploadImage(Request $request) { $file = $this->handleUpload($request, 'image'); // do something with $file }
ValidationExceptionListener
Since all handle*
methods in this trait throw a Nebkam\SymfonyTraits\ValidationException
, you have to catch it, either via try {..} catch
in the controller or via global exception listener.
To ease this, this package includes a sample exception listener, which returns validation errors in JSON. You just have to register it as a service:
Nebkam\SymfonyTraits\EventListener\ValidationExceptionListener: tags: - { name: kernel.event_listener, event: kernel.exception }