drupal-viewsdrupal-8drupal-entities

Argument 1 passed to EntityViewBuilder must implement interface, null given


In my Drupal project I have this error:

Recoverable fatal error: Argument 1 passed to Drupal\Core\Entity\EntityViewBuilder::view() must implement interface Drupal\Core\Entity\EntityInterface, null given, called in /Users/team1/workspace/ga_p/modules/field_collection/src/Plugin/Field/FieldFormatter/FieldCollectionItemsFormatter.php on line 33 and defined in Drupal\Core\Entity\EntityViewBuilder->view() (line 110 of core/lib/Drupal/Core/Entity/EntityViewBuilder.php). I do not know if it's from having created multiple fields (fieldCollections)

But I do not know how to remove this error.

Drupal Version: 8.3.4


Solution

  • Try this patch

    diff --git a/src/Plugin/Field/FieldType/FieldCollection.php b/src/Plugin/Field/FieldType/FieldCollection.php
    index 8721220..c5335be 100644
    --- a/src/Plugin/Field/FieldType/FieldCollection.php
    +++ b/src/Plugin/Field/FieldType/FieldCollection.php
    @@ -183,19 +183,15 @@ class FieldCollection extends EntityReferenceItem {
       public function preSave() {
    
         if ($field_collection_item = $this->getFieldCollectionItem()) {
    -      // TODO: Handle node cloning
    -      /*
    -      if (!empty($host_entity->is_new) && empty($entity->is_new)) {
    +      $host = $this->getEntity();
    +
    +      // Handle node cloning
    +      if($host->isNew() && !$field_collection_item->isNew()) {
             // If the host entity is new but we have a field_collection that is not
             // new, it means that its host is being cloned. Thus we need to clone
             // the field collection entity as well.
    -        $new_entity = clone $entity;
    -        $new_entity->target_id = NULL;
    -        $new_entity->revision_id = NULL;
    -        $new_entity->is_new = TRUE;
    -        $entity = $new_entity;
    +        $field_collection_item = $field_collection_item->createDuplicate();
           }
    -      */
    
           // TODO: Handle deleted items
           /*
    @@ -231,11 +227,10 @@ class FieldCollection extends EntityReferenceItem {
           }
           */
    
    -      $this->newHostRevision = $this->getEntity()->isNewRevision();
    +      $this->newHostRevision = $host->isNewRevision();
    
           // If the host entity is saved as new revision, do the same for the item.
           if ($this->newHostRevision) {
    -        $host = $this->getEntity();
    
             $field_collection_item->setNewRevision();
    
    diff --git a/src/Plugin/Field/FieldWidget/FieldCollectionEmbedWidget.php b/src/Plugin/Field/FieldWidget/FieldCollectionEmbedWidget.php
    index 4d6ae09..800383f 100644
    --- a/src/Plugin/Field/FieldWidget/FieldCollectionEmbedWidget.php
    +++ b/src/Plugin/Field/FieldWidget/FieldCollectionEmbedWidget.php
    @@ -104,9 +104,8 @@ class FieldCollectionEmbedWidget extends WidgetBase {
       protected function formMultipleElements(FieldItemListInterface $items, array &$form, FormStateInterface $form_state) {
         // We don't want to render empty items on field collection fields
         // unless a) the field collection is empty ; b) the form is rebuilding,
    -    // which means that the user clicked on "Add another item"; or
    -    // c) we are creating a new entity.
    -    if ((count($items) > 0) && !$form_state->isRebuilding() && !$items->getEntity()->isNew()) {
    +    // which means that the user clicked on "Add another item"
    +    if ((count($items) > 0) && !$form_state->isRebuilding()) {
           $field_name = $this->fieldDefinition->getName();
           $cardinality = $this->fieldDefinition->getFieldStorageDefinition()->getCardinality();
           $parents = $form['#parents'];
    

    mentioned here.