Annotations

Same name and namespace in other branches
  1. 8.9.x core/core.api.php \annotation
  2. 10 core/core.api.php \annotation
  3. 11.x core/core.api.php \annotation

Annotations for class discovery and metadata description.

The Drupal plugin system has a set of reusable components that developers can use, override, and extend in their modules. Most of the plugins use annotations, which let classes register themselves as plugins and describe their metadata. (Annotations can also be used for other purposes, though at the moment, Drupal only uses them for the plugin system.)

To annotate a class as a plugin, add code similar to the following to the end of the documentation block immediately preceding the class declaration:


* @ContentEntityType(
*   id = "comment",
*   label = @Translation("Comment"),
*   ...
*   base_table = "comment"
* )

Note that you must use double quotes; single quotes will not work in annotations.

Some annotation types, which extend the "@ PluginID" annotation class, have only a single 'id' key in their annotation. For these, it is possible to use a shorthand annotation. For example:


* @ViewsArea("entity")

in place of


* @ViewsArea(
*   id = "entity"
*)

The available annotation classes are listed in this topic, and can be identified when you are looking at the Drupal source code by having "@ Annotation" in their documentation blocks (without the space after @). To find examples of annotation for a particular annotation class, such as EntityType, look for class files that have an @ annotation section using the annotation class.

See also

Annotation for translatable text

Annotation for context definition

File

core/core.api.php, line 1855

Classes

Title Sort descending File name Summary
Action core/lib/Drupal/Core/Annotation/Action.php Defines an Action annotation object.
AnnotationEnum core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/AnnotationEnum.php Plugin annotation
@Target("ALL");
AnnotationEnumInvalid core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/AnnotationEnumInvalid.php Plugin annotation
@Target("ALL");
AnnotationEnumLiteral core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/AnnotationEnumLiteral.php Plugin annotation
@Target("ALL");
AnnotationEnumLiteralInvalid core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/AnnotationEnumLiteralInvalid.php Plugin annotation
@Target("ALL");
AnnotationExtendsAnnotationTargetAll core/tests/Drupal/Tests/Component/Annotation/Doctrine/DocParserTest.php
AnnotationTargetAll core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/AnnotationTargetAll.php Plugin annotation
@Target("ALL");
AnnotationTargetAnnotation core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/AnnotationTargetAnnotation.php Plugin annotation

@Target({ "ANNOTATION" })
AnnotationTargetClass core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/AnnotationTargetClass.php Plugin annotation
@Target("CLASS");
AnnotationTargetPropertyMethod core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/AnnotationTargetPropertyMethod.php Plugin annotation

@Target({ "METHOD", "PROPERTY" })
AnnotationWithAttributes core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/AnnotationWithAttributes.php Plugin annotation

@Target("ALL")
@Attributes({
@Attribute("mixed", type = "mixed"),
@Attribute("boolean", type = "boolean"),
@Attribute("bool", type = "bool"),
@Attribute("float", …
AnnotationWithConstants core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/AnnotationWithConstants.php Plugin annotation
@Target("ALL");
AnnotationWithInvalidTargetDeclaration core/tests/Drupal/Tests/Component/Annotation/Doctrine/DocParserTest.php Plugin annotation
@Target("Foo");
AnnotationWithRequiredAttributes core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/AnnotationWithRequiredAttributes.php Plugin annotation

@Target("ALL")
@Attributes({
@Attribute("value", required = true , type = "string"),
@Attribute("annot", required = true , type =…
AnnotationWithRequiredAttributesWithoutContructor core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/AnnotationWithRequiredAttributesWithoutContructor.php Plugin annotation
@Target("ALL");
AnnotationWithTargetEmpty core/tests/Drupal/Tests/Component/Annotation/Doctrine/DocParserTest.php @Target
AnnotationWithTargetSyntaxError core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/AnnotationWithTargetSyntaxError.php Plugin annotation

@Target(@)
AnnotationWithVarType core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/AnnotationWithVarType.php Plugin annotation
@Target("ALL");
AnnotWithDefaultValue core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/Annotation/AnnotWithDefaultValue.php
Archiver core/lib/Drupal/Core/Archiver/Annotation/Archiver.php Defines an archiver annotation object.
Autoload core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/Annotation/Autoload.php
Block core/lib/Drupal/Core/Block/Annotation/Block.php Defines a Block annotation object.
Condition core/lib/Drupal/Core/Condition/Annotation/Condition.php Defines a condition plugin annotation object.
ConfigEntityType core/lib/Drupal/Core/Entity/Annotation/ConfigEntityType.php Defines a config entity type annotation object.
Constraint core/lib/Drupal/Core/Validation/Annotation/Constraint.php Defines a validation constraint annotation object.
ContentEntityType core/lib/Drupal/Core/Entity/Annotation/ContentEntityType.php Defines a content entity type annotation object.
ContextDefinition core/lib/Drupal/Core/Annotation/ContextDefinition.php Defines a context definition annotation object.
CustomPlugin core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryTest.php Custom plugin annotation.
CustomPlugin2 core/tests/Drupal/Tests/Component/Annotation/AnnotatedClassDiscoveryTest.php Custom plugin annotation.
DataType core/lib/Drupal/Core/TypedData/Annotation/DataType.php Defines a data type annotation object.
DisplayVariant core/lib/Drupal/Core/Display/Annotation/DisplayVariant.php Defines a display variant annotation object.
Editor core/modules/editor/src/Annotation/Editor.php Defines an Editor annotation object.
Entity core/tests/Drupal/Tests/Component/Annotation/Doctrine/Ticket/DCOM58Test.php
Entity core/tests/Drupal/Tests/Component/Annotation/Doctrine/Ticket/DCOM58Entity.php This class is a near-copy of
tests/Doctrine/Tests/Common/Annotations/Ticket/DCOM58Entity.php, which is
part of the Doctrine project: <http://www.doctrine-project.org>. It was
copied from version 1.2.7.
EntityReferenceSelection core/lib/Drupal/Core/Entity/Annotation/EntityReferenceSelection.php Defines an EntityReferenceSelection plugin annotation object.
EntityType core/lib/Drupal/Core/Entity/Annotation/EntityType.php Defines an Entity type annotation object.
FieldFormatter core/lib/Drupal/Core/Field/Annotation/FieldFormatter.php Defines a FieldFormatter annotation object.
FieldType core/lib/Drupal/Core/Field/Annotation/FieldType.php Defines a FieldType annotation object.
FieldWidget core/lib/Drupal/Core/Field/Annotation/FieldWidget.php Defines a FieldWidget annotation object.
FormElement core/lib/Drupal/Core/Render/Annotation/FormElement.php Defines a form element plugin annotation object.
ImageToolkit core/lib/Drupal/Core/ImageToolkit/Annotation/ImageToolkit.php Defines a Plugin annotation object for the image toolkit plugin.
ImageToolkitOperation core/lib/Drupal/Core/ImageToolkit/Annotation/ImageToolkitOperation.php Defines a Plugin annotation object for the image toolkit operation plugin.
Layout core/lib/Drupal/Core/Layout/Annotation/Layout.php Defines a Layout annotation object.
Mail core/lib/Drupal/Core/Annotation/Mail.php Defines a Mail annotation object.
Marker core/tests/Drupal/Tests/Component/Annotation/Doctrine/DocParserTest.php
Name core/tests/Drupal/Tests/Component/Annotation/Doctrine/DocParserTest.php
PageDisplayVariant core/lib/Drupal/Core/Display/Annotation/PageDisplayVariant.php Defines a page display variant annotation object.
Plugin core/lib/Drupal/Component/Annotation/Plugin.php Defines a Plugin annotation object.
PluginID core/lib/Drupal/Component/Annotation/PluginID.php Defines a Plugin annotation object that just contains an ID.
PluralTranslation core/lib/Drupal/Core/Annotation/PluralTranslation.php Defines an annotation object for strings that require plural forms.
QueueWorker core/lib/Drupal/Core/Annotation/QueueWorker.php Declare a worker class for processing a queue item.
RenderElement core/lib/Drupal/Core/Render/Annotation/RenderElement.php Defines a render element plugin annotation object.
Route core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/Annotation/Route.php
Secure core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/Annotation/Secure.php
SettingsAnnotation core/tests/Drupal/Tests/Component/Annotation/Doctrine/DocParserTest.php
SomeAnnotationClassNameWithoutConstructor core/tests/Drupal/Tests/Component/Annotation/Doctrine/DocParserTest.php
SomeAnnotationClassNameWithoutConstructorAndProperties core/tests/Drupal/Tests/Component/Annotation/Doctrine/DocParserTest.php
SomeAnnotationWithConstructorWithoutParams core/tests/Drupal/Tests/Component/Annotation/Doctrine/DocParserTest.php
Template core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/Annotation/Template.php
Translation core/lib/Drupal/Core/Annotation/Translation.php Defines a translatable annotation object.
Version core/tests/Drupal/Tests/Component/Annotation/Doctrine/Fixtures/Annotation/Version.php Plugin annotation
@Target("PROPERTY");

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