<?php namespace Lc\CaracoleBundle\Controller\Setting; use Doctrine\ORM\EntityManagerInterface; use Lc\CaracoleBundle\Definition\MerchantSettingDefinitionInterface; use Lc\CaracoleBundle\Form\Setting\MerchantSettingsFormType; use Lc\CaracoleBundle\Form\Setting\SectionSettingsFormType; use Lc\CaracoleBundle\Resolver\MerchantResolver; use Lc\CaracoleBundle\Resolver\SectionResolver; use Lc\CaracoleBundle\Definition\SectionSettingDefinitionInterface; use Lc\SovBundle\Translation\TranslatorAdmin; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; class SettingAdminController extends AbstractController { protected $em; protected $merchantResolver; protected $merchantSettingDefinition; protected $sectionResolver; protected $sectionSettingDefinition; protected $translatorAdmin; public function __construct( EntityManagerInterface $em, MerchantResolver $merchantResolver, SectionResolver $sectionResolver, MerchantSettingDefinitionInterface $merchantSettingDefinition, SectionSettingDefinitionInterface $sectionSettingDefinition, TranslatorAdmin $translatorAdmin ) { $this->em = $em; $this->merchantResolver = $merchantResolver; $this->sectionResolver = $sectionResolver; $this->merchantSettingDefinition = $merchantSettingDefinition; $this->sectionSettingDefinition = $sectionSettingDefinition; $this->translatorAdmin = $translatorAdmin ; } public function manageMerchant(Request $request) { return $this->manage($request, 'merchant'); } public function manageSection(Request $request) { return $this->manage($request, 'section'); } public function manage(Request $request, $type) { $entity = null ; if ($type == 'merchant') { $resolver = $this->merchantResolver ; $formClass = MerchantSettingsFormType::class; $settingDefinition = $this->merchantSettingDefinition ; } elseif ($type == 'section') { $resolver = $this->sectionResolver ; $formClass = SectionSettingsFormType::class; $settingDefinition = $this->sectionSettingDefinition ; } $entity = $resolver->getCurrent(); if ($entity) { $form = $this->createForm($formClass, $entity); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $this->em->update($entity); $this->em->flush(); $this->addFlash('success', $this->translatorAdmin->transFlashMessage('settings_saved')); } return $this->render( '@LcCaracole/admin/setting/' . $type . '.html.twig', [ 'resolver' => $resolver, 'setting_definition' => $settingDefinition, 'form' => $form->createView() ] ); } } }