Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

50 lines
1.2KB

  1. <?php
  2. namespace Lc\CaracoleBundle\Form\Product;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Lc\CaracoleBundle\Model\Product\ProductInterface;
  5. use Symfony\Component\Form\DataTransformerInterface;
  6. use Symfony\Component\Form\Exception\TransformationFailedException;
  7. class ProductToIdTransformer implements DataTransformerInterface
  8. {
  9. private EntityManagerInterface $entityManager;
  10. public function __construct(EntityManagerInterface $entityManager)
  11. {
  12. $this->entityManager = $entityManager;
  13. }
  14. public function transform($product)
  15. {
  16. if (null === $product) {
  17. return '';
  18. }
  19. return $product->getId();
  20. }
  21. public function reverseTransform($productId)
  22. {
  23. if (!$productId) {
  24. return;
  25. }
  26. $product = $this->entityManager->getRepository(
  27. $this->entityManager->getEntityName(ProductInterface::class)
  28. )->find($productId);
  29. if (null === $product) {
  30. throw new TransformationFailedException(
  31. sprintf(
  32. 'An issue with number "%s" does not exist!',
  33. $productId
  34. )
  35. );
  36. }
  37. return $product;
  38. }
  39. }