SonataAdminConfigureListener.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. * @return string
  47. */
  48. public function trans($message, $options = [])
  49. {
  50. return $this->translator->trans($message, $options, 'ExtraDataBundle');
  51. }
  52. }