zend-blog-3-backend

Форк
0
/
PygmentsLanguageController.php 
155 строк · 4.7 Кб
1
<?php
2

3
namespace App\Controller\API;
4

5
use App\API\Transformers\PygmentsLanguageTransformer;
6
use App\Controller\BaseController;
7
use App\Entity\PygmentsLanguage;
8
use App\Form\PygmentsLanguageFormType;
9
use App\Repository\PygmentsLanguageRepository;
10
use Symfony\Component\HttpFoundation\JsonResponse;
11
use Symfony\Component\HttpFoundation\Request;
12
use Symfony\Component\HttpFoundation\Response;
13
use Symfony\Component\Routing\Annotation\Route;
14
use Symfony\Component\Validator\Validator\ValidatorInterface;
15

16
/**
17
 * @Route("/api/pygmentsLanguages")
18
 */
19
class PygmentsLanguageController extends BaseController
20
{
21
    /**
22
     * @Route("", methods={"GET"})
23
     *
24
     * @param Request $request
25
     * @param PygmentsLanguageRepository $repository
26
     *
27
     * @return JsonResponse
28
     */
29
    public function findAllAction(Request $request, PygmentsLanguageRepository $repository): JsonResponse
30
    {
31
        $pagination = $this->paginate(
32
            $repository->getListQuery(true),
33
            $request->query->get('page', 1)
34
        );
35

36
        $result = $this->getDataConverter()
37
            ->getPygmentsLanguageArray($pagination);
38

39
        return new JsonResponse($result);
40
    }
41

42
    /**
43
     * @Route("/{id}", requirements={"id": "\d+"}, methods={"GET"})
44
     *
45
     * @param PygmentsLanguage $entity
46
     *
47
     * @return JsonResponse
48
     */
49
    public function findAction(PygmentsLanguage $entity): JsonResponse
50
    {
51
        $result = $this->getDataConverter()
52
            ->getPygmentsLanguage($entity);
53

54
        return new JsonResponse($result);
55
    }
56

57
    /**
58
     * @Route("", methods={"POST"})
59
     *
60
     * @param ValidatorInterface $validator
61
     * @param Request $request
62
     *
63
     * @throws \Psr\Container\ContainerExceptionInterface
64
     * @throws \Psr\Container\NotFoundExceptionInterface
65
     *
66
     * @return JsonResponse
67
     */
68
    public function createAction(ValidatorInterface $validator, Request $request): JsonResponse
69
    {
70
        $form = $this->createObjectForm('pygmentsLanguage', PygmentsLanguageFormType::class);
71
        $form->handleRequest($request);
72

73
        [$formData, $errors] = $this->handleForm($form);
74
        if ($errors) {
75
            return new JsonResponse($errors, Response::HTTP_UNPROCESSABLE_ENTITY);
76
        }
77

78
        $entity = new PygmentsLanguage();
79
        PygmentsLanguageTransformer::reverseTransform($entity, $formData['pygmentsLanguage']);
80

81
        $errors = $this->validate($validator, $entity);
82
        if (count($errors) > 0) {
83
            return new JsonResponse($errors, Response::HTTP_UNPROCESSABLE_ENTITY);
84
        }
85

86
        $this->em->persist($entity);
87
        $this->em->flush();
88

89
        return new JsonResponse($this->getDataConverter()->getPygmentsLanguage($entity), Response::HTTP_CREATED);
90
    }
91

92
    /**
93
     * @Route("/{id}", requirements={"id": "\d+"}, methods={"PUT"})
94
     *
95
     * @param ValidatorInterface $validator
96
     * @param Request $request
97
     * @param PygmentsLanguage $entity
98
     *
99
     * @throws \Psr\Container\ContainerExceptionInterface
100
     * @throws \Psr\Container\NotFoundExceptionInterface
101
     *
102
     * @return JsonResponse
103
     */
104
    public function updateAction(ValidatorInterface $validator, Request $request, PygmentsLanguage $entity): JsonResponse
105
    {
106
        $form = $this->createObjectForm('pygmentsLanguage', PygmentsLanguageFormType::class, true);
107
        $form->handleRequest($request);
108

109
        [$formData, $errors] = $this->handleForm($form);
110
        if ($errors) {
111
            return new JsonResponse($errors, Response::HTTP_UNPROCESSABLE_ENTITY);
112
        }
113

114
        PygmentsLanguageTransformer::reverseTransform($entity, $formData['pygmentsLanguage']);
115

116
        $errors = $this->validate($validator, $entity);
117
        if (count($errors) > 0) {
118
            return new JsonResponse($errors, Response::HTTP_UNPROCESSABLE_ENTITY);
119
        }
120

121
        $this->em->persist($entity);
122
        $this->em->flush();
123

124
        return new JsonResponse($this->getDataConverter()->getPygmentsLanguage($entity));
125
    }
126

127
    /**
128
     * @Route("/{id}", requirements={"id": "\d+"}, methods={"DELETE"})
129
     *
130
     * @param PygmentsLanguage $entity
131
     *
132
     * @throws \Doctrine\ORM\Exception\ORMException
133
     *
134
     * @return JsonResponse
135
     */
136
    public function deleteAction(PygmentsLanguage $entity): JsonResponse
137
    {
138
        $this->getEm()->remove($entity);
139
        $this->getEm()->flush();
140

141
        return new JsonResponse(true);
142
    }
143

144
    /**
145
     * @Route("/list", name="language_choices", options={"expose"=true}, methods={"GET"})
146
     *
147
     * @param PygmentsLanguageRepository $repository
148
     *
149
     * @return JsonResponse
150
     */
151
    public function ajaxLanguagesListAction(PygmentsLanguageRepository $repository): JsonResponse
152
    {
153
        return new JsonResponse($repository->getNamesArray());
154
    }
155
}
156

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.