BlockContent.php

Same filename in this branch
  1. 11.x core/modules/block_content/src/Entity/BlockContent.php
  2. 11.x core/modules/block_content/src/Plugin/views/wizard/BlockContent.php
Same filename in other branches
  1. 9 core/modules/block_content/src/Entity/BlockContent.php
  2. 9 core/modules/block_content/src/Plugin/views/wizard/BlockContent.php
  3. 9 core/modules/block_content/src/Plugin/Derivative/BlockContent.php
  4. 8.9.x core/modules/block_content/src/Entity/BlockContent.php
  5. 8.9.x core/modules/block_content/src/Plugin/views/wizard/BlockContent.php
  6. 8.9.x core/modules/block_content/src/Plugin/Derivative/BlockContent.php
  7. 10 core/modules/block_content/src/Entity/BlockContent.php
  8. 10 core/modules/block_content/src/Plugin/views/wizard/BlockContent.php
  9. 10 core/modules/block_content/src/Plugin/Derivative/BlockContent.php

Namespace

Drupal\block_content\Plugin\Derivative

File

core/modules/block_content/src/Plugin/Derivative/BlockContent.php

View source
<?php

namespace Drupal\block_content\Plugin\Derivative;

use Drupal\Component\Plugin\Derivative\DeriverBase;
use Drupal\Core\Entity\EntityStorageInterface;
use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Retrieves block plugin definitions for all content blocks.
 */
class BlockContent extends DeriverBase implements ContainerDeriverInterface {
    
    /**
     * The content block storage.
     *
     * @var \Drupal\Core\Entity\EntityStorageInterface
     */
    protected $blockContentStorage;
    
    /**
     * Constructs a BlockContent object.
     *
     * @param \Drupal\Core\Entity\EntityStorageInterface $block_content_storage
     *   The content block storage.
     */
    public function __construct(EntityStorageInterface $block_content_storage) {
        $this->blockContentStorage = $block_content_storage;
    }
    
    /**
     * {@inheritdoc}
     */
    public static function create(ContainerInterface $container, $base_plugin_id) {
        $entity_type_manager = $container->get('entity_type.manager');
        return new static($entity_type_manager->getStorage('block_content'));
    }
    
    /**
     * {@inheritdoc}
     */
    public function getDerivativeDefinitions($base_plugin_definition) {
        $block_contents = $this->blockContentStorage
            ->loadByProperties([
            'reusable' => TRUE,
        ]);
        // Reset the discovered definitions.
        $this->derivatives = [];
        
        /** @var \Drupal\block_content\Entity\BlockContent $block_content */
        foreach ($block_contents as $block_content) {
            $this->derivatives[$block_content->uuid()] = $base_plugin_definition;
            $this->derivatives[$block_content->uuid()]['admin_label'] = $block_content->label() ?? $block_content->type->entity
                ->label() . ': ' . $block_content->id();
            $this->derivatives[$block_content->uuid()]['config_dependencies']['content'] = [
                $block_content->getConfigDependencyName(),
            ];
        }
        return parent::getDerivativeDefinitions($base_plugin_definition);
    }

}

Classes

Title Deprecated Summary
BlockContent Retrieves block plugin definitions for all content blocks.

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