I want create programmatically a custom content (custom content created via the admin UI). But, before the creation, I want check programmatically the types of fields of my custom content
My custom content contains a field "body" (type text), a field "description" (type text), an int field (type int), an attached file field (type fid ?)...
I test several ways with the new api of Drupal 8, my last try..
// I get the entity object "my_custom_content"
$entity_object = NodeType::load("my_custom_content");
dpm($entity_object); //Work perfectly
$test = \Drupal::getContainer()->get("entity_field.manager")->getFieldDefinitions("my_custom_content",$entity_object->bundle())
//The \Drupal::getConta... Return an error : The "my_custom_content" entity type does not exist.
With this $entity_object, how can I get the list of the fields of my custom content ? I see the EntityFieldManager Class, the FieldItemList Class...But I still do not understand how to play with drupal 8 / class / poo ... :/
Thanks !
NodeType is the (config) bundle entity for the Node (content) entity.
The correct call would be:
\Drupal::service('entity_field.manager')->getFieldDefinitions('node', 'my_custom_content');
To get the field definitions of any entity_type use the following structure:
\Drupal::service('entity_field.manager')->getFieldDefinitions(ENTITY_TYPE_ID, BUNDLE_ID);
For example, if you want to get all the field definitions of a paragraph bundle with the id multy_purpose_link then replace ENTITY_TYPE_ID with paragraph and BUNDLE_ID with multy_purpose_link
\Drupal::service('entity_field.manager')->getFieldDefinitions('paragraph', 'multy_purpose_link');