BlockContent.php

Same filename in this branch
  1. 9 core/modules/block_content/src/Entity/BlockContent.php
  2. 9 core/modules/block_content/src/Plugin/views/wizard/BlockContent.php
Same filename and directory in other branches
  1. 8.9.x core/modules/block_content/src/Entity/BlockContent.php
  2. 8.9.x core/modules/block_content/src/Plugin/views/wizard/BlockContent.php
  3. 8.9.x core/modules/block_content/src/Plugin/Derivative/BlockContent.php
  4. 10 core/modules/block_content/src/Entity/BlockContent.php
  5. 10 core/modules/block_content/src/Plugin/views/wizard/BlockContent.php
  6. 10 core/modules/block_content/src/Plugin/Derivative/BlockContent.php
  7. 11.x core/modules/block_content/src/Entity/BlockContent.php
  8. 11.x core/modules/block_content/src/Plugin/views/wizard/BlockContent.php
  9. 11.x 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 custom blocks.
 */
class BlockContent extends DeriverBase implements ContainerDeriverInterface {
    
    /**
     * The custom block storage.
     *
     * @var \Drupal\Core\Entity\EntityStorageInterface
     */
    protected $blockContentStorage;
    
    /**
     * Constructs a BlockContent object.
     *
     * @param \Drupal\Core\Entity\EntityStorageInterface $block_content_storage
     *   The custom 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();
            $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 custom blocks.

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