A convenient bundle for using ramsey/uuid in your project
php composer.phar require ekreative/uuid-extra-bundle
Include the bundle in your AppKernel
public function registerBundles()
{
$bundles = array(
...
new Ekreative\UuidExtraBundle\EkreativeUuidExtraBundle()
No config needed
Use just like any other param converter
/**
* @ParamConverter("uuid", class="Ramsey\Uuid\UuidInterface")
* @Route("/simple/{uuid}")
*/
public function simpleAction(UuidInterface $uuid)
{
return new Response($uuid->toString());
}
Most of the time its going to work automatically, as long as you use type hinting on your action
/**
* @Route("/automatic/{uuid}")
*/
public function simpleAction(UuidInterface $uuid)
{
return new Response($uuid->toString());
}
Also works for optional params
/**
* @Route("/optional/{uuid}")
*/
public function simpleAction(UuidInterface $uuid = null)
{
return new Response($uuid ? $uuid->toString() : 'no uuid');
}
Also like a normalizer should
$this->serializer->serialize($uuid, 'json')
Results in "f13a5b20-9741-4b15-8120-138009d8e0c7"
And the other way around
$this->serializer->denormalize('"f13a5b20-9741-4b15-8120-138009d8e0c7"', UuidInterface::class, 'json')
Results in $uuid
Works in your Objects etc.
Does everything you'd expect
->add('uuid', UuidType:class)
And if your model has
/**
* @Assert\Uuid
*/
private $uuid;
It will automatically use the UuidType