CategoryAutocompleteController.php

Same filename in other branches
  1. 8.9.x core/modules/block/src/Controller/CategoryAutocompleteController.php
  2. 10 core/modules/block/src/Controller/CategoryAutocompleteController.php
  3. 11.x core/modules/block/src/Controller/CategoryAutocompleteController.php

Namespace

Drupal\block\Controller

File

core/modules/block/src/Controller/CategoryAutocompleteController.php

View source
<?php

namespace Drupal\block\Controller;

use Drupal\Component\Utility\Html;
use Drupal\Core\Block\BlockManagerInterface;
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;

/**
 * Returns autocomplete responses for block categories.
 */
class CategoryAutocompleteController implements ContainerInjectionInterface {
    
    /**
     * The block manager.
     *
     * @var \Drupal\Core\Block\BlockManagerInterface
     */
    protected $blockManager;
    
    /**
     * Constructs a new CategoryAutocompleteController.
     *
     * @param \Drupal\Core\Block\BlockManagerInterface $block_manager
     *   The block manager.
     */
    public function __construct(BlockManagerInterface $block_manager) {
        $this->blockManager = $block_manager;
    }
    
    /**
     * {@inheritdoc}
     */
    public static function create(ContainerInterface $container) {
        return new static($container->get('plugin.manager.block'));
    }
    
    /**
     * Retrieves suggestions for block category autocompletion.
     *
     * @param \Symfony\Component\HttpFoundation\Request $request
     *   The current request.
     *
     * @return \Symfony\Component\HttpFoundation\JsonResponse
     *   A JSON response containing autocomplete suggestions.
     */
    public function autocomplete(Request $request) {
        $typed_category = $request->query
            ->get('q');
        $matches = [];
        foreach ($this->blockManager
            ->getCategories() as $category) {
            if (stripos($category, $typed_category) === 0) {
                $matches[] = [
                    'value' => $category,
                    'label' => Html::escape($category),
                ];
            }
        }
        return new JsonResponse($matches);
    }

}

Classes

Title Deprecated Summary
CategoryAutocompleteController Returns autocomplete responses for block categories.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.