id() == 'entity_test') { $definitions['test_text_access'] = BaseFieldDefinition::create('string') ->setLabel(t('Test access')) ->setTranslatable(FALSE) ->setSetting('max_length', 64) ->setDisplayOptions('form', [ 'type' => 'string_textfield', 'weight' => 10, ]); return $definitions; } } /** * Implements hook_entity_field_access(). * * @see \Drupal\system\Tests\Entity\FieldAccessTest::testFieldAccess() */ function views_entity_test_entity_field_access($operation, FieldDefinitionInterface $field_definition, AccountInterface $account, FieldItemListInterface $items = NULL) { if ($field_definition->getName() == 'test_text_access') { if ($items) { if ($items->value == 'no access value') { return AccessResult::forbidden()->addCacheableDependency($items->getEntity()); } } } // No opinion. return AccessResult::neutral(); } /** * Implements hook_entity_load(). * * @see \Drupal\Tests\views\Kernel\Handler\FieldFieldTest::testSimpleExecute() */ function views_entity_test_entity_load(array $entities, $entity_type_id) { if ($entity_type_id === 'entity_test') { // Cast the value of an entity field to be something else than a string so // we can check that // \Drupal\views\Tests\ViewResultAssertionTrait::assertIdenticalResultsetHelper() // takes care of converting all field values to strings. foreach ($entities as $entity) { $entity->user_id->target_id = (int) $entity->user_id->target_id; } } }