|
- <?php
-
- namespace Lc\CaracoleBundle\Form\Setting;
-
- use Lc\CaracoleBundle\Definition\MerchantSettingDefinitionInterface;
- use Lc\CaracoleBundle\Definition\SectionSettingDefinition;
- use Lc\CaracoleBundle\Model\Setting\MerchantSettingInterface;
- use Lc\CaracoleBundle\Model\Setting\SectionSettingInterface;
- use Symfony\Component\Form\Extension\Core\Type\HiddenType;
- use Doctrine\ORM\EntityManagerInterface;
- use Symfony\Component\Form\FormBuilderInterface;
- use Symfony\Component\Form\FormEvent;
- use Symfony\Component\Form\FormEvents;
- use Lc\SovBundle\Form\Setting\BaseSettingType as SovBaseSettingType;
-
- abstract class BaseSettingType extends SovBaseSettingType
- {
- protected EntityManagerInterface $em;
- protected MerchantSettingDefinitionInterface $merchantSettingDefinition;
- protected SectionSettingDefinition $sectionSettingDefinition;
-
- public function __construct(
- EntityManagerInterface $entityManager,
- MerchantSettingDefinitionInterface $merchantSettingDefinition,
- SectionSettingDefinition $sectionSettingDefinition
- ) {
- $this->em = $entityManager;
- $this->merchantSettingDefinition = $merchantSettingDefinition;
- $this->sectionSettingDefinition = $sectionSettingDefinition;
- }
-
- public function buildForm(FormBuilderInterface $builder, array $options)
- {
- $merchantSettingDefinition = $this->merchantSettingDefinition;
- $sectionSettingDefinition = $this->sectionSettingDefinition;
-
- $builder->addEventListener(
- FormEvents::PRE_SET_DATA,
- function (FormEvent $event) use ($merchantSettingDefinition, $sectionSettingDefinition) {
- $form = $event->getForm();
-
- $settingEntity = $event->getData();
-
- if ($settingEntity) {
- $form->add('name', HiddenType::class);
- $settingName = $settingEntity->getName();
-
- $transCategory = 'undefined' ;
- $setup = null ;
- if($settingEntity instanceof MerchantSettingInterface) {
- $transCategory = 'merchant' ;
- $settingDefinition = $merchantSettingDefinition ;
- }
- elseif($settingEntity instanceof SectionSettingInterface) {
- $transCategory = 'section' ;
- $settingDefinition = $sectionSettingDefinition ;
- }
-
- $label = 'setting_definition.'.$transCategory.'.settings.'.$settingName ;
-
- if(isset($settingDefinition) && $settingDefinition) {
- $this->buildFormSetting($label, $form, $settingDefinition, $settingEntity);
- }
- }
- }
- );
- }
-
- }
|