Build a Drupal Entity form/view field schema from your Drupal JSON:API entitiy with ease.
$ npm install drupal_jsonapi_entities
import drupalJSONAPIEntities from 'drupal_jsonapi_entities'
const drupalEntities = new drupalJSONAPIEntities(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.
const formSchema = await drupalEntities.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_display
field_config--field_config
field_storage_config--field_storage_config
Permissions:
administer display modes
administer ENTITY_TYPE fields
const viewSchema = await drupalEntities.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_display
entity_view_display--entity_view_display
field_config--field_config
field_storage_config--field_storage_config
Permissions:
administer display modes
administer 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()