/** * {@inheritdoc} */ public static function bundleFieldDefinitions(EntityTypeInterface $entity_type, $bundle, array $base_field_definitions) { /** @var Flag $flag */ if ($flag = Flag::load($bundle)) { $fields['flagged_entity'] = clone $base_field_definitions['flagged_entity']; $fields['flagged_entity']->setSetting('target_type', $flag->getFlaggableEntityTypeId()); return $fields; } return parent::bundleFieldDefinitions($entity_type, $bundle, $base_field_definitions); }
/** * Creates a flag entity using the admin UI. * * If you do not provide any bundles in $edit, all bundles for $entity_type * are assumed. * * @param string|null $entity_type * (optional) A string containing the flaggable entity type, by default * 'node'. * @param array $edit * (optional) An array of form field names and values. If omitted, random * strings will be used for the flag ID, label, short and long text. * @param string|null $link_type * (optional) A string containing the link type ID. Is omitted, assumes * 'reload'. * * @return \Drupal\flag\FlagInterface|null * The created flag entity. */ protected function createFlagWithForm($entity_type = 'node', $edit = [], $link_type = 'reload') { // Submit the flag add page. $this->drupalPostForm('admin/structure/flags/add', [ 'flag_entity_type' => $this->getFlagType($entity_type), ], $this->t('Continue')); // Set the link type. $this->drupalPostAjaxForm(NULL, ['link_type' => $link_type], 'link_type'); // Create an array of defaults. $default_edit = [ 'id' => strtolower($this->randomMachineName()), 'label' => $this->randomString(), 'flag_short' => $this->randomString(16), 'flag_long' => $this->randomString(16), ]; // Merge the default values with the edit array. $final_edit = array_merge($default_edit, $edit); // Submit the flag details form. $this->drupalPostForm(NULL, $final_edit, $this->t('Create Flag')); // Load the new flag we created. $flag = Flag::load($final_edit['id']); // Make sure that we actually did get a flag entity. $this->assertTrue($flag instanceof Flag); // Return the flag. return $flag; }