• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Understanding the Entity API Module
 

Understanding the Entity API Module

on

  • 897 views

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.

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.

Statistics

Views

Total Views
897
Views on SlideShare
897
Embed Views
0

Actions

Likes
4
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Understanding the Entity API Module Understanding the Entity API Module Presentation Transcript

    • Entity APIUnderstanding the Entity API ModuleSergiu SavvaDrupal developerwearepropeople.com
    • Summary1. An introduction to entities2. Entity types3. Bundles4. Fields5. Entity6. Entity API7. Entity metadata wrapper8. Getters ,Setters, Multilingual9. Entity + From API + Field API
    • An Introduction to EntitiesWe can build Entity types, which can makeBundles, to which we can add Fields andthen create Entities.Entity types > Bundles > Fields > Entities
    • Entity typesFieldable entities make Drupal eminentlyflexible. An entity type is a useful abstractionto group together fields.
    • Entity types● Nodes (content)● User profiles● Taxonomy terms● CommentsSome examples of entity types:
    • Entity types● label - The human-readable name of the type.● controller class - The name of the class that is used to load theobjects.● fieldable - Set to TRUE if you want your entity type to accept fieldsbeing attached to it.● bundles - An array describing all bundles for this object type.● view modes - An array describing the view modes for the entitytype.You can also build new kinds of entity types if theoptions above dont suit your needs.Read further about using the hook_entity_info()
    • BundlesBundles are an implementation of an entity typeto which fields can be attached. You can considerbundles as subtypes of an entity type.Bundles for entity type node:
    • FieldsFields can be added to any of the bundles orentity types to help organize their data.
    • EntityAn entity would be one instance of a particularentity type such as a comment, taxonomy term,user profile or a bundle such as a blog post, articleor product.● An entity type is a base class● A bundle is an extended class● A field is a class member, property, variable or fieldinstance (depending on your naming preference)● An entity is an object or instance of a base or extendedclass
    • Relation Entity - FieldEntity Fieldstitlebodytaxonomysome textnumberBundlesNode PageNews titlebodytaxonomysome textnumber
    • EntityEntity 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 thedatabase.entity_prepare_view Invoke hook_entity_prepare_view().entity_uri Returns the URI elements of an entity.
    • Core entitiesentity_get_info($entity_type = NULL)File : common.incGet the entity info array of an entity type.
    • Entity vs. Entity API
    • Entity API (contrib)The project Entity API extends the entity API of Drupalcore in order to provide an unified way to deal withentities and their properties.Additionally, it provides an entity CRUD* controller, whichhelps with simplifying the creation of new entity types.[ CRUD - Create, read, update and delete ]
    • Entity API (contrib)Name Descriptionentity_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.
    • Entity API hooks● hook_entity_view● hook_entity_insert● hook_entity_update● hook_entity_presave● hook_entity_delete● hook_entity_load
    • Entity metadata wrapper
    • Why use entity metadata wrappers?● Makes your code more readable● Provides a standardised way of accessing field values and entitiesthrough an API● Stops you hard coding the language key into the array lookups● Stops those nasty PHP warnings when you are trying to accessproperties that do not exist● The wrapper autoloads entities (when used in conjunction withthe ->value() accessor), which allow you to chain the callbacks
    • Entity metadata wrapper$wrapper = entity_metadata_wrapper(node, $nid);$mail = $wrapper-->author---->mail-->value();$wrapper-->author-->mail-->set(fago@example.com);$text = $wrapper-->field_text-->value();$wrapper-->language(de)-->field_text-->value();$terms = $wrapper-->field_tags-->value();$wrapper-->field_tags[] = $term;$options = $wrapper-->field_tags-->optionsList();$label = $wrapper-->field_tags[0]-->label();$access = $wrapper-->field_tags-->access(edit);
    • Entity metadata wrapper$node = entity_load_single(node,$nid);$entity_wrapper = entity_metadata_wrapper(node, $node);$entity_wrapper = entity_metadata_wrapper(node, $nid);Loador
    • Entity metadata wrapperGetters$entity_wrapper = entity_metadata_wrapper(node, 1);dpm($entity_wrapper->field_product->raw());dpm($entity_wrapper->field_product->value());
    • Entity metadata wrapperGetters$entity_wrapper = entity_metadata_wrapper(node, 1);dpm($entity_wrapper->value());
    • Entity metadata wrapper$wrapper = entity_metadata_wrapper(node, 1);$mail = $wrapper->author->mail->value();$wrapper->author->mail->set(foo@mail.com);$wrapper->author->mail = foo@mail.com;$wrapper->author->save();Setters
    • Entity metadata wrapperMultilingual$wrapper = entity_metadata_wrapper(node,1);dpm($wrapper->title_field->value());dpm($wrapper->language(ro)->title_field->value());dpm($wrapper->language(ru)->title_field->value());
    • 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
    • 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
    • Entity + From API + Field API
    • Entity + Form API + Field APIfunction myForm($form, $form_state){if (empty($id)){$entity = entity_create($entityType, array(type => $bundleName));} else {$entity = entity_load_single($entityType, $id);}field_attach_form($entityType, $entity, $form, $form_state);$from[#submit][] = myCustomSubmit;return $form;}function myCustomSubmit($form, $form_state){$entity = $form_state[values][myEntity];field_attach_submit($entity_type, $entity, $form, $form_state);}
    • Entity + Form API + Field APIfunction myForm($form, $form_state){$from[my_data] = array(#type => container,#parents => array(my_data),#tree => TRUE,);field_attach_form($entityType, $entity, $form[my_data], $form_state);$from[#submit][] = myCustomSubmit;return $form;}function myCustomSubmit($form, $form_state){$entity = $form_state[values][my_data][myEntity];field_attach_submit($entity_type, $entity, $form[my_data], $form_state);}
    • Thank you!