2. Summary
1. An introduction to entities
2. Entity types
3. Bundles
4. Fields
5. Entity
6. Entity API
7. Entity metadata wrapper
8. Getters ,Setters, Multilingual
9. Entity + From API + Field API
3. An Introduction to Entities
We can build Entity types, which can make
Bundles, to which we can add Fields and
then create Entities.
Entity types > Bundles > Fields > Entities
4. Entity types
Fieldable entities make Drupal eminently
flexible. An entity type is a useful abstraction
to group together fields.
5. Entity types
● Nodes (content)
● User profiles
● Taxonomy terms
● Comments
Some examples of entity types:
6. Entity types
● label - The human-readable name of the type.
● controller class - The name of the class that is used to load the
objects.
● fieldable - Set to TRUE if you want your entity type to accept fields
being attached to it.
● bundles - An array describing all bundles for this object type.
● view modes - An array describing the view modes for the entity
type.
You can also build new kinds of entity types if the
options above don't suit your needs.
Read further about using the hook_entity_info()
7. Bundles
Bundles are an implementation of an entity type
to which fields can be attached. You can consider
bundles as subtypes of an entity type.
Bundles for entity type node:
8. Fields
Fields can be added to any of the bundles or
entity types to help organize their data.
9. Entity
An entity would be one instance of a particular
entity type such as a comment, taxonomy term,
user profile or a bundle such as a blog post, article
or product.
● An entity type is a base class
● A bundle is an extended class
● A field is a class member, property, variable or field
instance (depending on your naming preference)
● An entity is an object or instance of a base or extended
class
10. Relation Entity - Field
Entity Fields
title
body
taxonomy
some text
number
Bundles
Node Page
News title
body
taxonomy
some text
number
11. Entity
Entity functions from core:
entity_get_controller Get the entity controller class for an entity type.
entity_get_info Get the entity info array of an entity type.
entity_label Returns the label of an entity.
entity_language Returns the language of an entity.
entity_load Load entities from the database.
entity_load_unchanged Loads the unchanged, i.e. not modified, entity from the
database.
entity_prepare_view Invoke hook_entity_prepare_view().
entity_uri Returns the URI elements of an entity.
14. Entity API (contrib)
The project Entity API extends the entity API of Drupal
core in order to provide an unified way to deal with
entities and their properties.
Additionally, it provides an entity CRUD* controller, which
helps with simplifying the creation of new entity types.
[ CRUD - Create, read, update and delete ]
15. Entity API (contrib)
Name Description
entity_access Determines whether the given user has access to an entity.
entity_create Create a new entity object.
entity_delete Permanently delete the given entity.
entity_delete_multiple Permanently delete multiple entities.
entity_export Exports an entity.
entity_import Imports an entity.
entity_load_single A wrapper around entity_load() to load a single entity by name or numeric id.
entity_metadata_wrapper Returns a property wrapper for the given data.
entity_revision_delete Deletes an entity revision.
entity_revision_load Loads an entity revision.
entity_save Permanently save an entity.
entity_theme Implements hook_theme().
entity_type_is_fieldable Checks whether an entity type is fieldable.
entity_view Generate an array for rendering the given entities.
entity_get_property_info Get the entity property info array of an entity type.
18. Why use entity metadata wrappers?
● Makes your code more readable
● Provides a standardised way of accessing field values and entities
through an API
● Stops you hard coding the language key into the array lookups
● Stops those nasty PHP warnings when you are trying to access
properties that do not exist
● The wrapper autoloads entities (when used in conjunction with
the ->value() accessor), which allow you to chain the callbacks
25. Entity metadata wrapper in life
// add the items from the 'show_features' taxonomy
$show_features = array();
$features = $series->field_features;
if (is_array($features[LANGUAGE_NONE])) {
foreach($features[LANGUAGE_NONE] as $tids) {
$tid = $tids['tid'];
$term = taxonomy_term_load($tid);
$featureList[] = $term->name;
}
}
Old approach
26. Entity metadata wrapper in life
// add the items from the 'show_features' taxonomy
$show_features = array();
foreach ($wrapper->field_features->value() => $feature) {
$show_features[] = $feature->name;
}
Entity metadata wrapper approach