[gelöst] Ungefiltertes HTML in Custom Modul
Eingetragen von landvogt512 (89)
am 13.06.2021 - 09:35 Uhr in
am 13.06.2021 - 09:35 Uhr in
Hallo miteinander!
Ich versuche auf einer per Modul generierten Seite, HTML auszugeben, das <script> und <style>
Tags enthält (Einbettunscode eines Newsletter).
Dazu habe ich ein Modul geschrieben und mir gedacht, dass ich hier wie in Drupal7 das Markup ungefiltert ausgeben könnte. Es stellt sich aber heraus, dass das so nicht geht, weil die meisten Tags herausgefiltert werden.
So sieht die Implementierung im Moment aus (Controller-File)
namespace Drupal\nw_newsletter_subscribe\Controller;
use Drupal\Core\Controller\ControllerBase;
/**
* Provides route responses for the module.
*/
class NewsletterSubscribeController extends ControllerBase {
/**
* Returns the Newsletter Signup Page.
*
* @return array
* A simple renderable array.
*/
public function nw_newsletter_subscribe_page() {
return [
'#markup' => "Raw HTML here",
];
}
}
Gibt es hier einen Workaround - ohne dass ich die ganzen styles und scripte in eine die libraries legen muss?
Danke voarb und LG
- Anmelden oder Registrieren um Kommentare zu schreiben
Probiere mal Folgendes. Ist
am 13.06.2021 - 17:16 Uhr
Probiere mal Folgendes. Ist zwar für 8.8 - könnte bei D9 aber ähnlich sein.
use Drupal\Core\Render\Markup;
[..]
return [
'#markup' => Markup::create($html),
];
Hier gefunden.
https://drupal.stackexchange.com/a/243216
Drupal rockt!!!
Inline scripte musst du seit
am 13.06.2021 - 17:42 Uhr
Inline scripte musst du seit D8 ausdrücklich erlauben, sonst filtert Drupal die raus:
<?php
use Drupal\Core\Render\Markup;
[..]
return [
'#markup' => Markup::create($html),
'#allowed_tags' => ['script']
];
?>
Ob das für Inline CSS auch gilt, weiss ich jetzt nicht. Sollte das aber der Fall sein, kannst du das Tag wahrscheinlich genauso erlauben. Also:
<?php
[..]
return [
'#markup' => Markup::create($html),
'#allowed_tags' => ['script', 'style']
];
?>
Danke
am 14.06.2021 - 07:06 Uhr
Dankesehr, das hat funktioniert.
Ich musste noch form und input zu den allowed tags hinzufügen, jetzt funktioniert das wunderbar.
Lg, M