Mercurial > hg > isophonics-drupal-site
diff core/modules/image/tests/src/Kernel/ImageFieldCreationTrait.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/image/tests/src/Kernel/ImageFieldCreationTrait.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,70 @@ +<?php + +namespace Drupal\Tests\image\Kernel; + +use Drupal\field\Entity\FieldConfig; +use Drupal\field\Entity\FieldStorageConfig; + +/** + * Provides a helper method for creating Image fields. + */ +trait ImageFieldCreationTrait { + + /** + * Create a new image field. + * + * @param string $name + * The name of the new field (all lowercase), exclude the "field_" prefix. + * @param string $type_name + * The node type that this field will be added to. + * @param array $storage_settings + * (optional) A list of field storage settings that will be added to the + * defaults. + * @param array $field_settings + * (optional) A list of instance settings that will be added to the instance + * defaults. + * @param array $widget_settings + * (optional) Widget settings to be added to the widget defaults. + * @param array $formatter_settings + * (optional) Formatter settings to be added to the formatter defaults. + * @param string $description + * (optional) A description for the field. Defaults to ''. + */ + protected function createImageField($name, $type_name, $storage_settings = [], $field_settings = [], $widget_settings = [], $formatter_settings = [], $description = '') { + FieldStorageConfig::create([ + 'field_name' => $name, + 'entity_type' => 'node', + 'type' => 'image', + 'settings' => $storage_settings, + 'cardinality' => !empty($storage_settings['cardinality']) ? $storage_settings['cardinality'] : 1, + ])->save(); + + $field_config = FieldConfig::create([ + 'field_name' => $name, + 'label' => $name, + 'entity_type' => 'node', + 'bundle' => $type_name, + 'required' => !empty($field_settings['required']), + 'settings' => $field_settings, + 'description' => $description, + ]); + $field_config->save(); + + entity_get_form_display('node', $type_name, 'default') + ->setComponent($name, [ + 'type' => 'image_image', + 'settings' => $widget_settings, + ]) + ->save(); + + entity_get_display('node', $type_name, 'default') + ->setComponent($name, [ + 'type' => 'image', + 'settings' => $formatter_settings, + ]) + ->save(); + + return $field_config; + } + +}