
| Current Path : /var/www/html/rocksensor3/web/core/lib/Drupal/Core/Plugin/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : /var/www/html/rocksensor3/web/core/lib/Drupal/Core/Plugin/Component.php |
<?php
namespace Drupal\Core\Plugin;
use Drupal\Core\Theme\Component\ComponentMetadata;
use Drupal\Core\Render\Component\Exception\InvalidComponentException;
/**
* Simple value object that contains information about the component.
*/
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);
}
}