SonataAdminConfigureListener.php 1.6 KB

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