Enkele maanden geleden moest ik een rich text editor in een custom Drupal form implementeren (voor de Drupal intranet distributie OpenLucius). En kon niet meteen een volledig werkende oplossing vinden online, maar uiteindelijk is het me gelukt. Dus voor iedereen die een rich text editor nodig heeft: hier is voorbeeldcode.
Zie de Drupal form file met de code in onderstaand voorbeeld. Dit is geen installeerbare module, maar een mockup bestand dat in 'your_module/src/Form' leeft. Meer info over custom forms.
Dit formulier gebruikt Dependency Injection for a Form om een custom Drupal Service te implementeren.
Belangrijkste Drupal code uitgelegd
De rich text editor beschikbaar maken voor eindgebruiker
Dit is alles wat je nodig hebt om de editor werkend te krijgen, ervan uitgaande dat je een (standard) Drupal install hebt, waarin het 'basic_html' filter bestaat. Een Drupal Minimal install heeft deze niet, maar uiteraard kan je ook je eigen Text Format configureren en die gebruiken in dit custom form.
Tekst invoer afhandelen: submit in custom Drupal form
- Haal de ingevoerde body-text op via
$form_state->getValue('body')['value'];
. Het deel['value']
koste mij enig research. - Voor veiligheidsredenen wordt hier de data opgeschoond met behulp van
check_markup($body,'basic_html');
. Drupal 9's filter.module biedt deze functie -die we op een procedurele manier kunnen gebruiken hier. - / 4. Ik heb de 'edit' mode grof ge-stubbed. Als je die wilt implementeren, dan is dit een voorbeeld hoe je kan switchen tussen opslaan van een nieuwe entity en updaten van een bestaande.
Wrap up
Ok, that's it for now. Het is niet uitgebreid maar hopelijk wel waardevol voor als je een rich text editor in je custom Drupal form wilt implementeren.