SonataAdminConfigureListener.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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
  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. if ($event->getMapper()->has('extraData')) {
  25. $translation_domain = 'ExtraDataBundle';
  26. $formMapper = $event->getMapper();
  27. $formMapper->add('extraData', TextareaType::class, array(
  28. 'required' => false,
  29. 'help' => $this->translator->trans('help.json_format', array(), $translation_domain),
  30. ), array(
  31. 'translation_domain' => $translation_domain,
  32. ));
  33. }
  34. }
  35. /**
  36. * @param ConfigureEvent $event
  37. */
  38. public function addTemplate(ConfigureEvent $event)
  39. {
  40. if ($event->getMapper()->has('extraData')) {
  41. $extraData = $event->getMapper()->get('extraData');
  42. $extraData->setTemplate('ExtraDataBundle:CRUD:extra_data_field.html.twig');
  43. $extraData->setOption('data', $event->getType());
  44. $extraData->setOption('translation_domain', 'ExtraDataBundle');
  45. }
  46. }
  47. }