protected function MultipleValuesGenerator::generateMissingValuesForField in Computed Field 3.x
Generates missing values for a particular computed field.
Parameters
string $field_id: The field machine name.
\Drupal\Core\Field\FieldDefinitionInterface $field_definition: The field definition.
Throws
\Exception If the entity is missing.
1 call to MultipleValuesGenerator::generateMissingValuesForField()
- MultipleValuesGenerator::generateMissingValues in src/
MultipleValuesGenerator.php - Generates missing computed-field values in multi-valued computed fields.
File
- src/
MultipleValuesGenerator.php, line 142
Class
- MultipleValuesGenerator
- Service for generating missing values for multi-valued computed fields.
Namespace
Drupal\computed_fieldCode
protected function generateMissingValuesForField($field_id, FieldDefinitionInterface $field_definition) {
$field_item_list = $this
->getEntity()
->get($field_id);
$updated_values = $field_item_list
->getValue();
$field_item_list_index = count($updated_values);
$field_cardinality = $field_definition
->getFieldStorageDefinition()
->getCardinality();
while ($this
->thereAreMoreValuesToCompute($field_cardinality, $field_item_list_index)) {
$field_item_list
->appendItem();
$field_item = $field_item_list
->get($field_item_list_index);
if ($field_item
->isEmpty()) {
$field_item_list
->removeItem($field_item_list_index);
break;
}
$updated_values[] = [
'value' => $field_item
->executeCode(),
];
$field_item_list_index++;
}
$this
->updateFieldIfMoreValuesHaveBeenAdded($field_item_list, $updated_values);
}