Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

71 lines
2.8KB

  1. <?php
  2. namespace Lc\CaracoleBundle\Form\Setting;
  3. use Lc\CaracoleBundle\Definition\MerchantSettingDefinitionInterface;
  4. use Lc\CaracoleBundle\Definition\SectionSettingDefinition;
  5. use Lc\CaracoleBundle\Model\Setting\MerchantSettingInterface;
  6. use Lc\CaracoleBundle\Model\Setting\SectionSettingInterface;
  7. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Component\Form\FormBuilderInterface;
  10. use Symfony\Component\Form\FormEvent;
  11. use Symfony\Component\Form\FormEvents;
  12. use Lc\SovBundle\Form\Setting\BaseSettingType as SovBaseSettingType;
  13. abstract class BaseSettingType extends SovBaseSettingType
  14. {
  15. protected EntityManagerInterface $em;
  16. protected MerchantSettingDefinitionInterface $merchantSettingDefinition;
  17. protected SectionSettingDefinition $sectionSettingDefinition;
  18. public function __construct(
  19. EntityManagerInterface $entityManager,
  20. MerchantSettingDefinitionInterface $merchantSettingDefinition,
  21. SectionSettingDefinition $sectionSettingDefinition
  22. ) {
  23. $this->em = $entityManager;
  24. $this->merchantSettingDefinition = $merchantSettingDefinition;
  25. $this->sectionSettingDefinition = $sectionSettingDefinition;
  26. }
  27. public function buildForm(FormBuilderInterface $builder, array $options)
  28. {
  29. $merchantSettingDefinition = $this->merchantSettingDefinition;
  30. $sectionSettingDefinition = $this->sectionSettingDefinition;
  31. $builder->addEventListener(
  32. FormEvents::PRE_SET_DATA,
  33. function (FormEvent $event) use ($merchantSettingDefinition, $sectionSettingDefinition) {
  34. $form = $event->getForm();
  35. $settingEntity = $event->getData();
  36. if ($settingEntity) {
  37. $form->add('name', HiddenType::class);
  38. $settingName = $settingEntity->getName();
  39. $transCategory = 'undefined' ;
  40. $setup = null ;
  41. if($settingEntity instanceof MerchantSettingInterface) {
  42. $transCategory = 'merchant' ;
  43. $settingDefinition = $merchantSettingDefinition ;
  44. }
  45. elseif($settingEntity instanceof SectionSettingInterface) {
  46. $transCategory = 'section' ;
  47. $settingDefinition = $sectionSettingDefinition ;
  48. }
  49. $label = 'setting_definition.'.$transCategory.'.settings.'.$settingName ;
  50. if(isset($settingDefinition) && $settingDefinition) {
  51. $this->buildFormSetting($label, $form, $settingDefinition, $settingEntity);
  52. }
  53. }
  54. }
  55. );
  56. }
  57. }