2013-06-13 10 views
12

Obecnie używam tego kodu z HTMLPurifier aby umożliwić data-* tag HTML atrybuty:pozwalając data- * atrybuty z HTMLPurifier

$def = $config->getHTMLDefinition(true); 
    $def->addAttribute('div', 'data-aaa', 'Text'); 
    $def->addAttribute('div', 'data-bbb', 'Text'); 
    // ... 

Czy istnieje sposób mogę zezwolić na wszystkie data-* atrybutów naraz, najlepiej na całą HTML tagi? (w moim przypadku nie są to problemy z bezpieczeństwem - oczywiście zgodnie z moją najlepszą wiedzą)

Odpowiedz

1

Nie, nie jest to możliwe bez modyfikacji strategii atestowania poprawności.

+0

Czy wiesz, jak można to zrobić? Próbowałem przeglądając kod, ale nie mogłem znaleźć miejsca, w którym to jest wykonywane ... – johndodo

+0

Innymi słowy, czy istnieje metoda 'isValidAttribute()', którą mogę przesłonić? – johndodo

+1

Nie, problem polega na tym, że "isValidAttribute" jest wykonywane przy użyciu funkcji mieszania, więc należy zastąpić całą strukturę danych. –

7

Nie jest to pełne rozwiązanie, ale udało mi się globalnie biało-lista indywidualnych data- atrybuty z kodem obserwacji, pozwalając im być umieszczone na każdym elemencie bez konieczności itemize każdy typ elementu dla każdego atrybutu.

$def = $config->getHTMLDefinition(true); 
$def->info_global_attr['data-aaa-xxx'] = new HTMLPurifier_AttrDef_Text; 
$def->info_global_attr['data-bbb-yyy'] = new HTMLPurifier_AttrDef_Text; 
$def->info_global_attr['data-ccc-zzz'] = new HTMLPurifier_AttrDef_Text; 
+0

To działało idealnie na moje potrzeby – DelightedD0D