Twig Filter html_entity_decode integrieren

Wo kann ich diesen Filter aktivieren/integrieren? Finde leider keinen Anhaltspunkt. Möchte das auf der Detailseite in der Beschreibung html entities entfernt werden, die aus meiner WaWi übertragen werden.

Würde mich über Hilfe sehr freuen.

Wahrscheinlich muss du dir einen eigenen Filter schreiben.
Mir hat damals dieser Thread dabei geholfen:

Leider geht der github Link nicht mehr.

new TwigFilter(‚html_entity_decode‘, ‚html_entity_decode‘, [‚is_safe‘ => [‚html‘]]),

Diesen Filter müßte ich in meinem Theme einbinden, dann läuft alles, was ich brauche. Evtl. kann mir hier noch jemand helfen.

Deine service.xml muss du erweitern:

<service id="ThemeNamespace\Twig\Filter\KlassenName" >
            <tag name="twig.extension" />
        </service>

Und dann die Klasse erstellen „ThemeNamespace\Twig\Filter\KlassenName.php“

<?php

namespace ThemeNamespace\Twig\Filter;

use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;

class JsonDecodeFilter extends AbstractExtension
{
    public function getFilters(): array
    {
        return [
            new TwigFilter(‚html_entity_decode‘, ‚html_entity_decode‘, [‚is_safe‘ => [‚html‘]]),
        ];
    }

}

Da es in meinem Theme nicht funktioniert hat, hatte ich das Ganze mal im Core getestet, mit Erfolg. Leider geht es seit dem heutigen Update auf die Version 6.4.8.1 nicht mehr.

Bevor Fragen aufkommen, ich habe die Änderung natürlich wieder im Core gemacht:

ReplaceRecursiveFilter.php

<?php declare(strict_types=1);

namespace Shopware\Core\Framework\Adapter\Twig\Filter;

use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;

class ReplaceRecursiveFilter extends AbstractExtension
{
    public function getFilters(): array
    {
        return [
            new TwigFilter('replace_recursive', [$this, 'replaceRecursive']),
            new TwigFilter('html_entity_decode', 'html_entity_decode', ['is_safe' => ['html']]),
        ];
    }

    public function replaceRecursive(array ...$params): array
    {
        return array_replace_recursive(...$params);
    }
}

Im Pfad: /dev_sw6/vendor/shopware/core/Framework/Adapter/Twig/Filter

Hat sich etwas bei Shopware geändert?

{{ beschreibung|e }}
oder
{{ beschreibung|e('html') }}

funktioniert wohl nicht? Das entspricht etwa dem htmlspecialchars aus php

Du meinst (zum Test) in der description.html.twig

{{ product.translated.description|e }}

Wenn ja, funktioniert das leider nicht.

Hat dieses Problem denn niemand? Der Filter scheint einfach nicht mehr zu funktionieren.

Langsam werde ich hier wirklich etwas verrückt. Hatte zuletzt die Version 6.4.10, damit konnte ich in der description.html.twig

{{ page.product.translated.description|html_entity_decode }}

Setzen, und damit lief alles super, so wie es soll, und das ohne einen eigenen Twig Filter einbinden zu müssen. Hab das dann in meinem Theme entsprechend geändert, alles toll. Jetzt ein Update auf 6.4.14.0 gemacht, und wieder geht nichts mehr, {{ page.product.translated.description|html_entity_decode }} wirft jetzt die Fehlermeldung auf der Detailseite raus, das etwas schief gelaufen ist. {{ page.product.translated.description|raw }} ist ja standard, und damit funktioniert es wie gewohnt, nur eben nicht, wie ich es brauche.

Warum wird hier ständig etwas geändert?

Ich habe das selbe Problem. Wie kann man |html_entity_decode im Shopware twig nutzen?