Skip to content
This repository has been archived by the owner on Dec 16, 2021. It is now read-only.

Proposition de Controller #332

Open
SalvadorCardona opened this issue Apr 24, 2018 · 0 comments
Open

Proposition de Controller #332

SalvadorCardona opened this issue Apr 24, 2018 · 0 comments

Comments

@SalvadorCardona
Copy link

SalvadorCardona commented Apr 24, 2018

J'ai créé un Controller utilisé juste pour les transactions Ajax. il permet de sérialiser les instances.

Controller

<?php
/**
 * @copyright Copyright (c) Wizacha
 * @license Proprietary
 */

namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Translation\TranslatorInterface;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use WizaplaceFrontBundle\Service\BasketService;
use Wizaplace\SDK\Catalog\CatalogServiceInterface;

class AjaxController extends Controller
{
    /** @var BasketService */
    private $basketService;

    /** @var TranslatorInterface */
    private $translator;

    /** @var Serializer */
    private $serializer;

    /** @var CatalogServiceInterface */
    private $catalogService;

    public function __construct(
        BasketService $basketService,
        TranslatorInterface $translator,
        CatalogServiceInterface $catalogService
    ) {
        $this->basketService = $basketService;
        $this->translator = $translator;
        $this->catalogService = $catalogService;

        $encoders = array(new JsonEncoder());
        $normalizers = array(new ObjectNormalizer());
        $this->serializer = new Serializer($normalizers, $encoders);
    }

    public function getBasketAction(): JsonResponse
    {
        return new JsonResponse($this->serializer->serialize(
            $this->basketService->getBasket(),
            'json'
        ));
    }

    public function getCategoryThreeAction(): JsonResponse
    {
        return new JsonResponse($this->serializer->serialize(
            $this->catalogService->getCategoryTree(),
            'json'
        ));
    }
}

Routing

# Ajax Actions
get_basket:
    path: /ajax/basket/get
    defaults: { _controller: AppBundle:Ajax:getbasket }

get_category_three:
    path: /ajax/category_three/get
    defaults: { _controller: AppBundle:Ajax:getCategoryThree }
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Development

No branches or pull requests

1 participant