|
- <?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()
- ]
- );
- }
- }
-
- }
|