Học tập Custom controller with JSON response in Drupal 9
26th Jul 2022![Học tập Custom controller with JSON response in Drupal 9](/sites/default/files/2022-07/json_api.png)
in this article, I'll show you how to create custom controller with JSON response in Drupal 9
add to your module these files like this:
create mymodule.routing.yml
codimth.json_api_articles: path: '/api/articles' defaults: _controller: 'Drupal\mymodule\Controller\JsonApiArticlesController::index' _title: 'Codimth JSON api' methods: [GET] requirements: _access: 'TRUE'
create src/Controller/JsonApiArticlesController.php
getData():
will return article nodes from database.
<?php namespace Drupal\mymodule\Controller; use Symfony\Component\HttpFoundation\JsonResponse; /** * Class JsonApiArticlesController * @package Drupal\mymodule\Controller */ class JsonApiArticlesController { /** * @return JsonResponse */ public function index() { return new JsonResponse([ 'data' => $this->getData(), 'method' => 'GET', 'status'=> 200]); } /** * @return array */ public function getData() { $result=[]; $query = \Drupal::entityQuery('node') ->condition('type', 'article') ->sort('title', 'DESC'); $nodes_ids = $query->execute(); if ($nodes_ids) { foreach ($nodes_ids as $node_id) { $node = \Drupal\node\Entity\Node::load($node_id); $result[] = [ "id" => $node->id(), "title" => $node->getTitle(), ]; } } return $result; } }
/api/articles will return result like this:
- 9 views
Add new comment