SonataAdminConfigureListener.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace ExtraDataBundle\EventListener;
  3. use Sonata\AdminBundle\Event\ConfigureEvent;
  4. use Symfony\Component\Translation\TranslatorInterface;
  5. class SonataAdminConfigureListener
  6. {
  7. /**
  8. * @var TranslatorInterface $translator
  9. */
  10. private $translator;
  11. /**
  12. * @param TranslatorInterface $translator
  13. */
  14. public function __construct(TranslatorInterface $translator)
  15. {
  16. $this->translator = $translator;
  17. }
  18. /**
  19. * @param ConfigureEvent $event
  20. */
  21. public function addOptions(ConfigureEvent $event)
  22. {
  23. $formMapper = $event->getMapper();
  24. if ($formMapper->has('extraData')) {
  25. $formMapper->addHelp('extraData', $this->trans('help.json_format'));
  26. $extraDataField = $formMapper->get('extraData');
  27. $extraDataField->setRequired(false);
  28. }
  29. }
  30. /**
  31. * @param ConfigureEvent $event
  32. */
  33. public function addTemplate(ConfigureEvent $event)
  34. {
  35. if ($event->getMapper()->has('extraData')) {
  36. $extraData = $event->getMapper()->get('extraData');
  37. $extraData->setTemplate('ExtraDataBundle:CRUD:extra_data_field.html.twig');
  38. $extraData->setOption('data', $event->getType());
  39. $extraData->setOption('translation_domain', 'ExtraDataBundle');
  40. }
  41. }
  42. /**
  43. * @param string $message
  44. * @param array $options
  45. */
  46. public function trans($message, $options = [])
  47. {
  48. return $this->translator->trans($message, $options, 'ExtraDataBundle');
  49. }
  50. }