2013-06-13 8 views
12

वर्तमान में मैं HTMLPurifier के साथ इस कोड का उपयोग कर रहा data-* एचटीएमएल टैग विशेषताओं अनुमति देने के लिए:की इजाजत दी डेटा- * HTMLPurifier साथ जिम्मेदार बताते हैं

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

वहाँ एक रास्ता मैं एक बार में सभी data-* विशेषताओं अनुमति दे सकते हैं पर सभी HTML बेहतर है, टैग? (वे मेरे मामले में एक सुरक्षा समस्या नहीं हैं - पाठ्यक्रम के बारे में मेरे सर्वोत्तम ज्ञान के लिए)

उत्तर

1

नहीं, वैध विशेषता रणनीति को संशोधित किए बिना यह संभव नहीं है।

+0

क्या आप जानते हैं कि यह कैसे किया जा सकता है? मैंने कोड को देखने का प्रयास किया है लेकिन यह एक जगह नहीं मिल सका जहां यह किया गया है ... – johndodo

+0

दूसरे शब्दों में, क्या 'isValidAttribute()' विधि है जिसे मैं ओवरराइड कर सकता हूं? – johndodo

+1

नहीं, समस्या है 'isValidAttribute' हैश लुकअप का उपयोग करके किया जाता है, इसलिए आपको संपूर्ण डेटा संरचना को प्रतिस्थापित करने की आवश्यकता होगी। –

7

यह एक पूर्ण समाधान नहीं है, लेकिन मैं अनुवर्ती कोड के साथ व्यक्तिगत data- विशेषताओं को सफेद सूची में सक्षम करने में सक्षम था, जिससे उन्हें प्रत्येक तत्व के लिए प्रत्येक तत्व प्रकार को आइटम किए बिना किसी भी तत्व पर रखा जा सकता था।

$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

यह मेरी आवश्यकताओं के लिए पूरी तरह से काम किया – DelightedD0D

संबंधित मुद्दे