class Component

Same name in this branch
  1. 11.x core/lib/Drupal/Core/Plugin/Component.php \Drupal\Core\Plugin\Component
Same name and namespace in other branches
  1. 10 core/modules/sdc/src/Plugin/Component.php \Drupal\sdc\Plugin\Component

Simple value object that contains information about the component.

@internal

Hierarchy

Expanded class hierarchy of Component

6 files declare their use of Component
ComponentNodeVisitor.php in core/modules/sdc/src/Twig/ComponentNodeVisitor.php
ComponentPluginManager.php in core/modules/sdc/src/ComponentPluginManager.php
ComponentValidator.php in core/modules/sdc/src/Component/ComponentValidator.php
ComponentValidatorTest.php in core/modules/sdc/tests/src/Unit/ComponentValidatorTest.php
sdc.module in core/modules/sdc/sdc.module
Module implementation file.

... See full list

8 string references to 'Component'
AnnotatedClassDiscoveryAutomatedProviders::prepareAnnotationDefinition in core/modules/migrate/src/Plugin/Discovery/AnnotatedClassDiscoveryAutomatedProviders.php
Prepares the annotation definition.
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
DefaultPluginManager::findDefinitions in core/lib/Drupal/Core/Plugin/DefaultPluginManager.php
Finds plugin definitions.

... See full list

File

core/modules/sdc/src/Plugin/Component.php, line 14

Namespace

Drupal\sdc\Plugin
View source
final class Component extends PluginBase {
    
    /**
     * The component's metadata.
     *
     * @var \Drupal\sdc\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\sdc\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('sdc/%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.

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