I had a couple of instances where I needed to check if an object field existed. Initially I used propertyExists. However, when running Solr, it tripped on this command. So some other function was required. And in steps hasField(). It is a good idea to validate the existence before using it to avoid any unexpected error.
Code:
$entity->hasField('fieldName');
Drupal API hasField() function determines if Drupal entity has a field with a given name or not. It returns a boolean “TRUE” if the given name is found or “FALSE” otherwise. By way of example, the following code using hasField() method:
/**
* Get the value of an Entity field.
* First by confirming that the field exists in the current entity.
* Second, check the current paragraph has a value.
*
* @param Object $entity
* @param String $fieldName
*
* @return Array
*/
function get_field_values($entity, $fieldName) {
$values = [];
if ($entity->hasField($fieldName)) {
$field = $entity->get($fieldName);
if (!$field->isEmpty()) {
$fieldValue = $field->getValue();
$values = load_field_values($fieldValue);
}
}
return $values;
}
Whilst, it not required in this example, I do call another function and in case I get a request for it... here it is:
/**
* Retrieve the field values.
*
* @param Array $values
*
* @return Array
*/
function load_field_values($values) {
$results = [];
foreach ($values as $value) {
$results[] = $value['target_id'];
}
return $results;
}
The get_field_values function, I have used in paragraphs and media with great success.