Build a Drupal Entity form/view field schema from your Drupal JSON:API entitiy with ease.
$ npm install drupal_jsonapi_entities
importdrupalJSONAPIEntitiesfrom'drupal_jsonapi_entities'constdrupalEntities=newdrupalJSONAPIEntities(url,options)The constructor takes two arguments:
url: The base URL of the Drupal instance.options: The API options.
- auth: An array for use authorizing the client with the Drupal instance.
Currently only supports OAuth2 password flow.
- clientId: The Oauth 2 Client ID.
- clientSecret: The Oauth 2 Client secret.
- user: The Drupal username.
- pass: The Drupal user passsword.
constformSchema=awaitdrupalEntities.getFormSchema(entityType,bundle,mode)The method takes three arguments:
entityType: The Drupal entity type ID.bundle: The Drupal bundle ID for the entity type.mode: The form display mode. Default:default.
Returns a JSON object:
- fields: An array of field objects, sorted by weight.
- cardinality: Allowed number of values.
- description: Help text.
- id: Machine name.
- property: True if field is a property on the Drupal entity.
- label: Label.
- required: Required field.
- settings: Merged object of field settings.
- type: Field type machine name.
- weight: Form display field weight.
- group: (optional) Group.
- groups: An array of Drupal Field Group module group objects, sorted by weight.
- children: Array of fields in group.
- format_settings: Settings for the display of the group.
- format_type: Type of group for display.
- id: Machine name.
- label: Label.
- weight: Weight.
JSON:API resources:
entity_form_display--entity_form_displayfield_config--field_configfield_storage_config--field_storage_config
Permissions:
administer display modesadminister ENTITY_TYPE fields
constviewSchema=awaitdrupalEntities.getViewSchema(entityType,bundle,mode)The method takes three arguments:
entityType: The Drupal entity type ID.bundle: The Drupal bundle ID for the entity type.mode: The view display mode. Default:default.
Returns a JSON object:
- fields: An array of field objects, sorted by weight.
- description: Help text.
- id: Machine name.
- property: True if field is a property on the Drupal entity.
- label: Label.
- labelPosition: Label position.
- required: Required field.
- settings: Merged object of field settings.
- thirdPartySettings: Settings of any third party modules.
- type: Field type machine name.
- weight: Form display field weight.
- group: (optional) Group.
- groups: An array of Drupal Field Group module group objects, sorted by weight.
- children: Array of fields in group.
- format_settings: Settings for the display of the group.
- format_type: Type of group for display.
- id: Machine name.
- label: Label.
- weight: Weight.
JSON:API resources:
entity_form_display--entity_form_displayentity_view_display--entity_view_displayfield_config--field_configfield_storage_config--field_storage_config
Permissions:
administer display modesadminister ENTITY_TYPE fields
Drupal JSON:API Entities provides a Nuxt.js module for easily caching the schema(s).
Add drupal_jsonapi_entities/nuxt to the modules section of your
nuxt.config.js file.
module.exports={modules: [// Drupal JSON:API entities.['drupal_jsonapi_entities/nuxt',{baseUrl: process.env.API_URL,auth: {clientId: process.env.API_CONSUMER_CLIENT_ID,clientSecret: process.env.API_CONSUMER_CLIENT_SECRET,user: process.env.API_CONSUMER_USERNAME,pass: process.env.API_CONSUMER_PASSWORD}}],]}Add a drupalJSONAPIEntities section to your nuxt.config.js file in the
following format for all required Entity types, Bundles, Schema types and
Modes:
module.exports={drupalJSONAPIEntities: {'entityType': {'bundle': {'type': ['mode']}}}}Example:
module.exports={drupalJSONAPIEntities: {'node': {'recipe': {form: ['default'],view: ['default'],}}}}The module provides a plugin, which returns the Drupal JSON:API Entities schema(s).
this.$drupalJSONAPIEntities()