ExtraDataTrait.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace ExtraDataBundle\Entity\Traits;
  3. use Doctrine\ORM\Mapping as ORM;
  4. use Symfony\Component\Validator\Constraints as Assert;
  5. trait ExtraDataTrait
  6. {
  7. /**
  8. * @var string $extraData
  9. *
  10. * @ORM\Column(type="text", nullable=true)
  11. *
  12. * @Assert\Callback(
  13. * callback={"ExtraDataBundle\Validator\JSONValidator", "validate"},
  14. * payload={"field"="extraData"}
  15. * )
  16. */
  17. private $extraData;
  18. /**
  19. * @return string
  20. */
  21. public function getExtraData()
  22. {
  23. return $this->extraData;
  24. }
  25. /**
  26. * @param string $extraData
  27. *
  28. * @return $this
  29. */
  30. public function setExtraData($extraData = null)
  31. {
  32. $this->extraData = $extraData;
  33. return $this;
  34. }
  35. /**
  36. * @return array
  37. */
  38. public function jsonExtraData()
  39. {
  40. return json_decode($this->extraData, true);
  41. }
  42. /**
  43. * @param mixed $extraData
  44. *
  45. * @return ExtraDataTrait
  46. */
  47. public function setJsonExtraData($extraData)
  48. {
  49. return $this->setExtraData(json_encode($extraData));
  50. }
  51. /**
  52. * @param string $key
  53. *
  54. * @return mixed
  55. */
  56. public function getData($key)
  57. {
  58. $extraData = $this->jsonExtraData();
  59. $value = null;
  60. if (isset($extraData[$key])) {
  61. $value = $extraData[$key];
  62. }
  63. return $value;
  64. }
  65. }