SonataAdminConfigureListener.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. $ed = $formMapper->getFormBuilder()->get('extraData');
  26. $ed->getOptions()['required'] = false;
  27. $ed->getOptions()['label'] = $this->trans('form.label_extra_data');
  28. $ed->getOptions()['help'] = $this->trans('help.json_format');
  29. }
  30. }
  31. /**
  32. * @param ConfigureEvent $event
  33. */
  34. public function addTemplate(ConfigureEvent $event)
  35. {
  36. if ($event->getMapper()->has('extraData')) {
  37. $extraData = $event->getMapper()->get('extraData');
  38. $extraData->setTemplate('ExtraDataBundle:CRUD:extra_data_field.html.twig');
  39. $extraData->setOption('data', $event->getType());
  40. $extraData->setOption('translation_domain', 'ExtraDataBundle');
  41. }
  42. }
  43. /**
  44. * @param string $message
  45. * @param array $options
  46. */
  47. public function trans($message, $options = [])
  48. {
  49. return $this->translator->trans($message, $options, 'ExtraDataBundle');
  50. }
  51. }