web-dev-qa-db-fra.com

Comment forcer un format de texte et masquer le sélecteur de format dans un champ de texte formaté?

Je souhaite forcer un certain format de texte dans un champ de format de texte de profil utilisateur et masquer la liste déroulante du sélecteur de format de texte. Comment fait-on ça? C'est pour Drupal 8.

6
José Trindade

Installez le module Formats autorisés et configurez le champ pour n'autoriser qu'un seul format de texte. Ensuite, la liste déroulante du sélecteur de format de texte ne sera plus affichée.

9
4k4

Adapté du code Formats autorisés :

use Drupal\Core\Form\FormStateInterface;

/**
 * Implements hook_field_widget_form_alter().
 */
function mymodule_field_widget_form_alter(&$element, FormStateInterface $form_state, $context) {
  // Maps field names to an array containing a single format.
  $map = [
    'field_myfield' => ['myformat'],
  ];

  $field_name = $context['items']->getFieldDefinition()->getName();

  if (array_key_exists($field_name, $map)) {
    $element['#allowed_formats'] = $map[$field_name];
    $element['#after_build'][] = '_remove_text_format_box';
  }
}

/**
 * #after_build callback.
 */
function _remove_text_format_box($form_element, FormStateInterface $form_state) {
  // Remove help, guidelines and wrapper.
  unset($form_element['format']['help']);
  unset($form_element['format']['guidelines']);
  unset($form_element['format']['#type']);
  unset($form_element['format']['#theme_wrappers']);

  return $form_element;
}
9
Tim