public function HideIfEmpty::access in Field Formatter Condition 8
Access control function.
Parameters
array $build: The current build array.
string $field: The current field name.
array $settings: The current settings array.
Overrides FieldFormatterConditionBase::access
File
- src/
Plugin/ Field/ FieldFormatter/ Condition/ HideIfEmpty.php, line 53
Class
- HideIfEmpty
- The plugin for check empty fields.
Namespace
Drupal\fico\Plugin\Field\FieldFormatter\ConditionCode
public function access(&$build, $field, $settings) {
if (isset($build[$settings['settings']['target_field']]['#items'])) {
$fields = $build[$settings['settings']['target_field']]['#items'];
if (is_object($fields)) {
$field_storage = FieldStorageConfig::loadByName($settings['entity_type'], $settings['settings']['target_field']);
$values = $fields
->getValue();
switch ($field_storage
->getType()) {
case 'comment':
if ($values[0]['comment_count'] == 0) {
$build[$field]['#access'] = FALSE;
}
break;
case 'image':
case 'entity_reference':
if (!isset($values[0]['target_id'])) {
$build[$field]['#access'] = FALSE;
}
break;
case 'link':
if (!isset($values[0]['uri'])) {
$build[$field]['#access'] = FALSE;
}
break;
default:
if (!isset($values[0]['value'])) {
$build[$field]['#access'] = FALSE;
}
}
}
}
else {
if ($entity = $this
->getEntity($build)) {
if ($entity
->get($settings['settings']['target_field'])
->isEmpty()) {
$build[$field]['#access'] = FALSE;
}
}
else {
$build[$field]['#access'] = FALSE;
}
}
}