ENTITIES

Vad är en entitet?

Ett utdrag från Wikipedia definierar en entitet såhär

I engelskan förklaras en "entity" som någonting konkret eller abstrakt som finns, har funnits eller kan finnas; exempelvis en person, en sak, en händelse, en process eller en idé. "Objekt och funktioner" är en översättning som brukar användas i svenskan.

En entitet beskriver alltså oftast en sak, händelse eller process precis som utdragen från Wikipedia-artikeln nämner.

En entitet i kod beskrivs oftast med hjälp av en klass där namnet på klassen är namnet på saken, händelsen eller processen vi vill beskriva.

Sammanfattat

Hur används då Entiteter i Drupal 8?

Det finns två utgångslägen för entiteter

Innehåll

Konfiguration

Innehålls-entitet

(Content Entity)

Används till dynamisk data som oftast skapas av någon typ av användare.

Exempel på innehålls-entiteter i Drupal 8

  • Innehåll (Nodes)
  • Kommentarer (Comments)
  • Filer (Files)

Konfigurations-entitet

(Config Entity)

Används till "statisk" data som ska sparas som konfiguration. Kan exporteras som .yml filer som sedan kan importeras i andra miljöer t.ex. production.

Exempel på konfigurations-entiteter i Drupal 8

  • Vyer (Views)
  • Innehållstyper (Page, Article, etc.)
  • Bildstilar (Image styles)
  • Visningslägen (View modes)

Hur ser då en entitet ut i kod?

En entitet är en klass!

/**
 * Defines the Example entity.
 *
 * @ConfigEntityType(
 *   id = "example",
 *   label = @Translation("Example"),
 *   handlers = {
 *     "list_builder" = "Drupal\example\Controller\ExampleListBuilder",
 *     "form" = {
 *       "add" = "Drupal\example\Form\ExampleForm",
 *       "edit" = "Drupal\example\Form\ExampleForm",
 *       "delete" = "Drupal\example\Form\ExampleDeleteForm",
 *     }
 *   },
 *   config_prefix = "example",
 *   admin_permission = "administer site configuration",
 *   entity_keys = {
 *     "id" = "id",
 *     "label" = "label",
 *   },
 *   links = {
 *     "edit-form" = "/admin/config/system/example/{example}",
 *     "delete-form" = "/admin/config/system/example/{example}/delete",
 *   }
 * )
 */
class Example extends ConfigEntityBase implements ExampleInterface {}

Vad är detta?!?!?

Annotations

/**
 * @ContentEntityType(
 *   id = "example_content",
 *   label = @Translation("Example Content"),
 * )
 */

Annotations är meta-data som beskriver en entitet.  Drupal använder sig av denna informationen för att registrera och konfigurera en entitet.

/**
 * @ConfigEntityType(
 *   id = "example_config",
 *   label = @Translation("Example Config"),
 * )
 */

Innehåll

Konfiguration

Vi tittar lite snabbt på några av entiteterna som finns i Drupal 8.

På vilka andra ställen används Annotations i Drupal 8?

Dagens övningar!

Kommer vi att göra tillsammans.

Jag kommer gå igenom varje moment på tavlan och sedan får ni fundera, ställa frågor, diskutera och själv utföra samma sak som jag precis visade.

I slutet av dagen har vi förhoppningsvis en färdig konfigurations-entitet med formulär.

Vi fokuserar på konfigurations-entiteter.

Drupal 8 Entities

By Christoffer Palm

Drupal 8 Entities

A quick walkthrough of Entities in Drupal 8, what their purpose are and what we can do with them.

  • 4,404