Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. Component.php

class Component

Simple value object that contains information about the component.

Hierarchy

  • class \Drupal\Component\Plugin\PluginBase implements \Drupal\Component\Plugin\PluginInspectionInterface, \Drupal\Component\Plugin\DerivativeInspectionInterface
    • class \Drupal\Core\Plugin\PluginBase extends \Drupal\Component\Plugin\PluginBase uses \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Messenger\MessengerTrait
      • class \Drupal\Core\Plugin\Component extends \Drupal\Core\Plugin\PluginBase

Expanded class hierarchy of Component

5 files declare their use of Component
ComponentNodeVisitor.php in core/lib/Drupal/Core/Template/ComponentNodeVisitor.php
ComponentPluginManager.php in core/lib/Drupal/Core/Theme/ComponentPluginManager.php
ComponentsTwigExtension.php in core/lib/Drupal/Core/Template/ComponentsTwigExtension.php
ComponentValidator.php in core/lib/Drupal/Core/Theme/Component/ComponentValidator.php
LibraryDiscoveryParser.php in core/lib/Drupal/Core/Asset/LibraryDiscoveryParser.php
10 string references to 'Component'
AnnotatedClassDiscoveryAutomatedProviders::prepareAnnotationDefinition in core/modules/migrate/src/Plugin/Discovery/AnnotatedClassDiscoveryAutomatedProviders.php
Prepares the annotation definition.
BundlesElement::getComponentElements in vendor/phar-io/manifest/src/xml/BundlesElement.php
ComponentPluginManager::getDiscovery in core/lib/Drupal/Core/Theme/ComponentPluginManager.php
Gets the plugin discovery.
ConfigMapperManager::findDefinitions in core/modules/config_translation/src/ConfigMapperManager.php
Finds plugin definitions.
core.entity.schema.yml in core/config/schema/core.entity.schema.yml
core/config/schema/core.entity.schema.yml

... See full list

File

core/lib/Drupal/Core/Plugin/Component.php, line 11

Namespace

Drupal\Core\Plugin
View source
class Component extends PluginBase {
    
    /**
     * The component's metadata.
     *
     * @var \Drupal\Core\Theme\Component\ComponentMetadata
     */
    public readonly ComponentMetadata $metadata;
    
    /**
     * The component machine name.
     *
     * @var string
     */
    public readonly string $machineName;
    
    /**
     * The Twig template for the component.
     *
     * @var string
     */
    public readonly string $template;
    
    /**
     * The library definition to be attached with the component.
     *
     * @var array
     */
    public readonly array $library;
    
    /**
     * Component constructor.
     *
     * @throws \Drupal\Core\Render\Component\Exception\InvalidComponentException
     */
    public function __construct(array $configuration, $plugin_id, $plugin_definition) {
        parent::__construct($configuration, $plugin_id, $plugin_definition);
        if (str_contains($plugin_id, '/')) {
            $message = sprintf('Component ID cannot contain slashes: %s', $plugin_id);
            throw new InvalidComponentException($message);
        }
        $template = $plugin_definition['template'] ?? NULL;
        if (!$template) {
            $message = sprintf('Unable to find the Twig template for the component "%s".', $plugin_id);
            throw new InvalidComponentException($message);
        }
        $this->template = $template;
        $this->machineName = $plugin_definition['machineName'];
        $this->library = $plugin_definition['library'] ?? [];
        $this->metadata = new ComponentMetadata($plugin_definition, $configuration['app_root'], (bool) ($configuration['enforce_schemas'] ?? FALSE));
    }
    
    /**
     * The template path.
     *
     * @return string|null
     *   The path to the template.
     */
    public function getTemplatePath() : ?string {
        return $this->metadata->path . DIRECTORY_SEPARATOR . $this->template;
    }
    
    /**
     * The auto-computed library name.
     *
     * @return string
     *   The library name.
     */
    public function getLibraryName() : string {
        $library_id = $this->getPluginId();
        $library_id = str_replace(':', '--', $library_id);
        return sprintf('core/components.%s', $library_id);
    }

}

Members

Title Sort descending Modifiers Object type Summary
Component::$library public property The library definition to be attached with the component.
Component::$machineName public property The component machine name.
Component::$metadata public property The component's metadata.
Component::$template public property The Twig template for the component.
Component::getLibraryName public function The auto-computed library name.
Component::getTemplatePath public function The template path.
Component::__construct public function Component constructor.

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal