public function EntityTypeForm::submitForm in Field Encryption 3.0.x
Form submission handler.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Overrides FormInterface::submitForm
File
- src/
Form/ EntityTypeForm.php, line 205
Class
- EntityTypeForm
- Configures field encryption on the entity type level.
Namespace
Drupal\field_encrypt\FormCode
public function submitForm(array &$form, FormStateInterface $form_state) {
$entity_type_id = $form_state
->getValue('entity_type');
if ($form['entity_type']['#default_value'] === $form_state
->getValue('entity_type')) {
/** @var \Drupal\field_encrypt\Entity\FieldEncryptEntityType $field_encrypt_settings */
$field_encrypt_settings = $this->entityTypeManager
->getStorage('field_encrypt_entity_type')
->load($entity_type_id);
if (!$field_encrypt_settings) {
$field_encrypt_settings = $this->entityTypeManager
->getStorage('field_encrypt_entity_type')
->create([
'id' => $entity_type_id,
]);
}
$base_fields = [];
// @todo Ajax results in form not having the correct values.
$selected_base_fields = array_filter($form_state
->getUserInput()['base_fields']);
foreach ($selected_base_fields as $base_field) {
if ($form_state
->hasValue([
'base_field_properties',
$base_field,
])) {
$selected_base_field_properties = array_filter($form_state
->getUserInput()['base_field_properties'][$base_field]);
// Remove anything not that's change in user input.
$base_fields[$base_field] = array_values(array_intersect_key($selected_base_field_properties, $form_state
->getValue([
'base_field_properties',
$base_field,
])));
if (empty($base_fields[$base_field])) {
unset($base_fields[$base_field]);
}
}
}
if (empty($base_fields)) {
$field_encrypt_settings
->delete();
}
else {
$field_encrypt_settings
->setBaseFields($base_fields)
->save();
}
$this
->messenger()
->addStatus($this
->t('Updated encryption settings for %entity_type base fields.', [
'%entity_type' => $this->entityTypeManager
->getDefinition($entity_type_id)
->getLabel(),
]));
$form_state
->setRedirect('field_encrypt.settings.entity_type');
}
elseif ($entity_type_id) {
// Handle the non-javascript case and redirect to the form for the entity
// type.
$form_state
->setRedirect('field_encrypt.settings.entity_type', [
'entity_type_id' => $entity_type_id,
]);
}
}