function FieldBlock::blockAccess
Same name in other branches
- 8.9.x core/modules/layout_builder/src/Plugin/Block/FieldBlock.php \Drupal\layout_builder\Plugin\Block\FieldBlock::blockAccess()
- 10 core/modules/layout_builder/src/Plugin/Block/FieldBlock.php \Drupal\layout_builder\Plugin\Block\FieldBlock::blockAccess()
- 11.x core/modules/layout_builder/src/Plugin/Block/FieldBlock.php \Drupal\layout_builder\Plugin\Block\FieldBlock::blockAccess()
Overrides BlockPluginTrait::blockAccess
File
-
core/
modules/ layout_builder/ src/ Plugin/ Block/ FieldBlock.php, line 186
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() && !$field->getFieldDefinition()
->getDefaultValue($entity)) {
// @todo Remove special handling of image fields after
// https://www.drupal.org/project/drupal/issues/3005528.
if ($field->getFieldDefinition()
->getType() === 'image' && $field->getFieldDefinition()
->getSetting('default_image')) {
return $access;
}
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.