createFilteredQueryBuilder($request->query->all()); return $this->json($this->paginator->paginateWithLegacyMeta($qb, $request), Response::HTTP_OK, [], [ 'groups' => self::READ_GROUPS, ]); } #[Route('/alias/{alias}', name: 'article_show_by_alias', methods: ['GET'])] public function showByAlias(string $alias, ArticleRepository $repository): JsonResponse { $article = $repository->findOneByAlias($alias); if (!$article) { throw $this->createNotFoundException('Статья не найдена'); } return $this->crud->read($article, self::READ_GROUPS); } #[Route('/{id}', name: 'article_show', methods: ['GET'], requirements: ['id' => '\d+'])] public function show(Article $article): JsonResponse { return $this->crud->read($article, self::READ_GROUPS); } #[IsGranted('ROLE_ADMIN')] #[Route('/create', name: 'article_create', methods: ['POST'])] public function create(Request $request): JsonResponse { return $this->crud->create($request, Article::class, self::WRITE_GROUPS, self::READ_GROUPS); } #[IsGranted('ROLE_ADMIN')] #[Route('/{id}', name: 'article_update', methods: ['PUT'], requirements: ['id' => '\d+'])] public function update(Request $request, Article $article): JsonResponse { return $this->crud->update($request, $article, self::WRITE_GROUPS, self::READ_GROUPS); } #[IsGranted('ROLE_ADMIN')] #[Route('/{id}', name: 'article_delete', methods: ['DELETE'], requirements: ['id' => '\d+'])] public function delete(Article $article): JsonResponse { return $this->crud->delete($article); } }