function FieldBlock::blockAccess
Indicates whether the block should be shown.
Blocks with specific access checking should override this method rather than access(), in order to avoid repeating the handling of the $return_as_object argument.
Parameters
\Drupal\Core\Session\AccountInterface $account: The user session for which to check access.
Return value
\Drupal\Core\Access\AccessResultInterface The access result.
Overrides BlockPluginTrait::blockAccess
File
- 
              core/
modules/ layout_builder/ src/ Plugin/ Block/ FieldBlock.php, line 194  
Class
- FieldBlock
 - Provides a block that renders a field from an entity.
 
Namespace
Drupal\layout_builder\Plugin\BlockCode
protected function blockAccess(AccountInterface $account) {
  $entity = $this->getEntity();
  // First consult the entity.
  $access = $entity->access('view', $account, TRUE);
  if (!$access->isAllowed()) {
    return $access;
  }
  // Check that the entity in question has this field.
  if (!$entity instanceof FieldableEntityInterface || !$entity->hasField($this->fieldName)) {
    return $access->andIf(AccessResult::forbidden());
  }
  // Check field access.
  $field = $entity->get($this->fieldName);
  $access = $access->andIf($field->access('view', $account, TRUE));
  if (!$access->isAllowed()) {
    return $access;
  }
  // Check to see if the field has any values or a default value.
  if ($field->isEmpty() && !$this->entityFieldHasDefaultValue()) {
    return $access->andIf(AccessResult::forbidden());
  }
  return $access;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.