Skip to content
Snippets Groups Projects
Commit ab96a0ab authored by Tim Bozeman's avatar Tim Bozeman
Browse files

Issue #3488747 by tim bozeman: Always use a generator

parent e2790f54
Branches
Tags 1.0.4
No related merge requests found
# Field Sample Value
This module makes the field sample generator pluggable. You can configure a generator for a field by navigating Structure > Content Types > Manage Fields > Edit the Field.
Then check "Set sample value" and select a generator. If no generator is selected for a field the last option in the list will be selected. If the field requires a text editor
the global default can be configured by running `drush cset filter.settings fallback_format YOUR_FILTER_FORMAT_ID`.
......@@ -148,7 +148,7 @@ function field_sample_value_form_field_config_submit($form, FormStateInterface $
*/
function field_sample_value_entity_bundle_field_info_alter(&$fields, EntityTypeInterface $entity_type, $bundle): void {
foreach ($fields as $field_definition) {
if (_field_sample_value_should_generate_sample_value($field_definition)) {
if (_field_sample_value_field_definition_has_generator_configured($field_definition)) {
$field_definition->addConstraint('SampleValue', []);
}
}
......@@ -163,7 +163,7 @@ function field_sample_value_entity_bundle_field_info_alter(&$fields, EntityTypeI
*
* @return bool
*/
function _field_sample_value_should_generate_sample_value(FieldDefinitionInterface $field_definition): bool {
function _field_sample_value_field_definition_has_generator_configured(FieldDefinitionInterface $field_definition): bool {
return $field_definition instanceof FieldConfigInterface
&& ($sample_value = $field_definition->getThirdPartySettings('field_sample_value'))
&& !empty($sample_value['id']);
......
......@@ -47,7 +47,7 @@ class SampleValueEntityGenerator implements SampleValueEntityGeneratorInterface
*/
public function populateWithSampleValues(FieldableEntityInterface $entity): void {
foreach ($entity->getFieldDefinitions() as $field_name => $field_definition) {
if (!_field_sample_value_should_generate_sample_value($field_definition)) {
if (!_field_sample_value_field_definition_has_generator_configured($field_definition)) {
continue;
}
......@@ -68,15 +68,18 @@ class SampleValueEntityGenerator implements SampleValueEntityGeneratorInterface
*/
public function populateWithSampleValue(FieldItemListInterface $field):void {
$field_definition = $field->getFieldDefinition();
if (_field_sample_value_should_generate_sample_value($field_definition)) {
if (_field_sample_value_field_definition_has_generator_configured($field_definition)) {
// Use the configured generator.
/** @var \Drupal\field_sample_value\SampleValueGeneratorInterface $generator */
$sample_value_info = $field_definition->getThirdPartySettings('field_sample_value');
$generator = $this->sampleValueGeneratorManager->createInstance($sample_value_info['id'], $sample_value_info['configuration'] ?? []);
$generator->generateSampleValue($field);
}
else {
$field->generateSampleItems();
// Pick one to use. Anything is better than Core's generator.
$generator_ids = $this->sampleValueGeneratorManager->getApplicableGenerators($field_definition->getType());
$generator = $this->sampleValueGeneratorManager->createInstance(array_pop($generator_ids), []);
}
$generator->generateSampleValue($field);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment