zend-blog-3-backend

Форк
0
/
CategoryController.php 
146 строк · 3.8 Кб
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: morontt
5
 * Date: 15.02.15
6
 * Time: 20:03
7
 */
8

9
namespace App\Controller\API;
10

11
use App\Controller\BaseController;
12
use App\Entity\Category;
13
use App\Form\CategoryFormType;
14
use App\Repository\CategoryRepository;
15
use Symfony\Component\HttpFoundation\JsonResponse;
16
use Symfony\Component\HttpFoundation\Request;
17
use Symfony\Component\HttpFoundation\Response;
18
use Symfony\Component\Routing\Annotation\Route;
19

20
/**
21
 * @Route("/api/categories")
22
 *
23
 * Class CategoryController
24
 */
25
class CategoryController extends BaseController
26
{
27
    /**
28
     * @Route("", methods={"GET"})
29
     *
30
     * @param Request $request
31
     * @param CategoryRepository $repository
32
     *
33
     * @return JsonResponse
34
     */
35
    public function findAllAction(Request $request, CategoryRepository $repository): JsonResponse
36
    {
37
        $pagination = $this->paginate(
38
            $repository->getListQuery(),
39
            $request->query->get('page', 1)
40
        );
41

42
        $result = $this->getDataConverter()
43
            ->getCategoryArray($pagination);
44

45
        return new JsonResponse($result);
46
    }
47

48
    /**
49
     * @Route("/{id}", requirements={"id": "\d+"}, methods={"GET"})
50
     *
51
     * @param Category $entity
52
     *
53
     * @return JsonResponse
54
     */
55
    public function findAction(Category $entity): JsonResponse
56
    {
57
        $result = $this->getDataConverter()
58
            ->getCategory($entity);
59

60
        return new JsonResponse($result);
61
    }
62

63
    /**
64
     * @Route("", methods={"POST"})
65
     *
66
     * @param Request $request
67
     *
68
     * @throws \Psr\Container\ContainerExceptionInterface
69
     * @throws \Psr\Container\NotFoundExceptionInterface
70
     *
71
     * @return JsonResponse
72
     */
73
    public function createAction(Request $request): JsonResponse
74
    {
75
        $form = $this->createObjectForm('category', CategoryFormType::class);
76
        $form->handleRequest($request);
77

78
        [$formData, $errors] = $this->handleForm($form);
79
        if ($errors) {
80
            return new JsonResponse($errors, Response::HTTP_UNPROCESSABLE_ENTITY);
81
        }
82

83
        $result = $this->getDataConverter()->saveCategory(new Category(), $formData['category']);
84

85
        return new JsonResponse($result, Response::HTTP_CREATED);
86
    }
87

88
    /**
89
     * TODO update nested-set tree
90
     *
91
     * @Route("/{id}", requirements={"id": "\d+"}, methods={"PUT"})
92
     *
93
     * @param Request $request
94
     * @param Category $entity
95
     *
96
     * @throws \Psr\Container\ContainerExceptionInterface
97
     * @throws \Psr\Container\NotFoundExceptionInterface
98
     *
99
     * @return JsonResponse
100
     */
101
    public function updateAction(Request $request, Category $entity): JsonResponse
102
    {
103
        $form = $this->createObjectForm('category', CategoryFormType::class, true);
104
        $form->handleRequest($request);
105

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

111
        $result = $this->getDataConverter()->saveCategory($entity, $formData['category']);
112

113
        return new JsonResponse($result);
114
    }
115

116
    /**
117
     * TODO update nested-set tree
118
     *
119
     * @Route("/{id}", requirements={"id": "\d+"}, methods={"DELETE"})
120
     *
121
     * @param Category $entity
122
     *
123
     * @throws \Doctrine\ORM\Exception\ORMException
124
     *
125
     * @return JsonResponse
126
     */
127
    public function deleteAction(Category $entity): JsonResponse
128
    {
129
        $this->getEm()->remove($entity);
130
        $this->getEm()->flush();
131

132
        return new JsonResponse(true);
133
    }
134

135
    /**
136
     * @Route("/list", name="category_choices", options={"expose"=true}, methods={"GET"})
137
     *
138
     * @param CategoryRepository $repository
139
     *
140
     * @return JsonResponse
141
     */
142
    public function ajaxCategoryListAction(CategoryRepository $repository): JsonResponse
143
    {
144
        return new JsonResponse($repository->getNamesArray());
145
    }
146
}
147

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

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

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

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