class Marquee in Examples for Developers 8
Same name and namespace in other branches
- 3.x modules/render_example/src/Element/Marquee.php \Drupal\render_example\Element\Marquee
Provides a marquee render element.
New render element types are defined as plugins. They live in the Drupal\{module_name}\Element namespace and implement \Drupal\Core\Render\Element\ElementInterface. They are annotated with either \Drupal\Core\Render\Annotation\RenderElement or \Drupal\Core\Render\Annotation\FormElement. And extend either the \Drupal\Core\Render\Element\RenderElement, or \Drupal\Core\Render\Element\FormElement base classes.
In the annotation below we define the string "marquee" as the ID for this plugin. That will also be the value used for the '#type' property in a render array. For example:
$build['awesome'] = [
'#type' => 'marquee',
'#content' => 'Whoa cools, a marquee!',
];
View an example of this custom element in use in \Drupal\render_example\Controller\RenderExampleController::arrays().
Plugin annotation
@RenderElement("marquee");
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\Core\Render\Element\RenderElement implements ElementInterface
- class \Drupal\render_example\Element\Marquee
- class \Drupal\Core\Render\Element\RenderElement implements ElementInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of Marquee
See also
1 #type use of Marquee
- RenderExampleController::arrays in render_example/
src/ Controller/ RenderExampleController.php - Examples of defining content using renderable arrays.
File
- render_example/
src/ Element/ Marquee.php, line 37
Namespace
Drupal\render_example\ElementView source
class Marquee extends RenderElement {
/**
* {@inheritdoc}
*/
public function getInfo() {
// Returns an array of default properties that will be merged with any
// properties defined in a render array when using this element type.
// You can use any standard render array property here, and you can also
// custom properties that are specific to your new element type.
return [
// See render_example_theme() where this new theme hook is declared.
'#theme' => 'render_example_marquee',
// Define a default #pre_render method. We will use this to handle
// additional processing for the custom attributes we add below.
'#pre_render' => [
[
self::class,
'preRenderMarquee',
],
],
// This is a custom property for our element type. We set it to blank by
// default. The expectation is that a user will add the content that they
// would like to see inside the marquee tag. This custom property is
// accounted for in the associated template file.
'#content' => '',
'#attributes' => [
'direction' => 'left',
'loop' => -1,
'scrollamount' => 'random',
],
];
}
/**
* Pre-render callback; Process custom attribute options.
*
* @param array $element
* The renderable array representing the element with '#type' => 'marquee'
* property set.
*
* @return array
* The passed in element with changes made to attributes depending on
* context.
*/
public static function preRenderMarquee(array $element) {
// Normal attributes for a <marquee> tag do not include a 'random' option
// for scroll amount. Our marquee element type does though. So we use this
// #pre_render callback to check if the element was defined with the value
// 'random' for the scrollamount attribute, and if so replace the string
// with a random number.
if ($element['#attributes']['scrollamount'] == 'random') {
$element['#attributes']['scrollamount'] = abs(rand(1, 50));
}
return $element;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
Marquee:: |
public | function |
Returns the element properties for this element. Overrides ElementInterface:: |
|
Marquee:: |
public static | function | Pre-render callback; Process custom attribute options. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
PluginBase:: |
public | function | Constructs a \Drupal\Component\Plugin\PluginBase object. | 92 |
RenderElement:: |
public static | function | Adds Ajax information about an element to communicate with JavaScript. | |
RenderElement:: |
public static | function | Adds members of this group as actual elements for rendering. | |
RenderElement:: |
public static | function | Form element processing handler for the #ajax form property. | 1 |
RenderElement:: |
public static | function | Arranges elements into groups. | |
RenderElement:: |
public static | function |
Sets a form element's class attribute. Overrides ElementInterface:: |
|
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |