2014-09-24 11 views
35

मैं लार्वेल में एक छोटा सीएमएस बना रहा हूं और प्रत्येक मैंने डीबी में संग्रहीत सामग्री को दिखाने की कोशिश की है जो इसे निष्पादित करने के बजाय HTML टैग दिखा रहा है जैसे सभी मुद्रित के लिए एक ऑटो html_entity_decode है डेटाब्लेड टेम्पलेट में सभी एचटीएमएल से बचने वाले लार्वा

<?php 
class CmsController extends BaseController{ 
    public function Content($name){ 

     $data = Pages::where('CID','=',Config::get('company.CID'))->where('page_name','=',$name)->first(); 
     return View::make('cms.page')->with('content', $data); 
    } 
} 
?> 

मैं घुंघराले ब्रेस

{{$content->page_desc}} 

और ट्रिपल घुंघराले ब्रेस का उपयोग कर सामग्री मुद्रित करने के लिए करने की कोशिश की

{{{$content->page_desc}}} 

और वे एक ही परिणाम
देना मैं उन्हें

+1

नवीनतम संस्करण 'ver-5.0'' {{...}} 'और '{{{}}}} में' यह दोनों करता है, आपके पास वास्तव में कौन सा संस्करण है? –

+0

संस्करण 4.2 –

+0

का उपयोग कर रहा हूं तो मुझे यकीन नहीं है कि क्यों {{{...}} 'बच निकला परिणाम! –

उत्तर

2

बचने ब्लेड टेम्पलेट्स में एचटीएमएल कोड को प्रदर्शित करने के साथ कोई समस्या नहीं है के बजाय उन HTML टैग निष्पादित करने के लिए की जरूरत है।

परीक्षण के लिए, आप केवल एक मार्ग routes.php को जोड़ सकते हैं:

Route::get('/', function() { 

     $data = new stdClass(); 
     $data->page_desc 
      = '<strong>aaa</strong><em>bbb</em> 
       <p>New paragaph</p><script>alert("Hello");</script>'; 

     return View::make('hello')->with('content', $data); 
    } 
); 

और hello.blade.php फ़ाइल में:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
</head> 
<body> 

{{ $content->page_desc }} 

</body> 
</html> 

निम्नलिखित कोड आप छवि

पर के रूप में उत्पादन के लिए मिल जाएगा

Output

तो शायदआपके मामले मेंआपकी अपेक्षा नहीं है। लेकिन जैसा कि आप देख के रूप में यह संभावित खतरनाक अगर किसी को `उदाहरण 'के लिए टैग का उपयोग करता हो सकता है तो आप चाहिए शायद कुछ टैग

संपादित ब्लेड टेम्पलेट फिल्टर करने के लिए बताए

मैं भी साथ यह परीक्षण किया है से पहले अपने मार्ग में डेटाबेस में एक ही कोड डाल:

Route::get('/', function() { 

     $data = User::where('id','=',1)->first(); 

     return View::make('hello')->with('content', $data); 
    } 
); 

आउटपुट वास्तव में इस मामले में एक ही है

EDIT2

मुझे यह भी नहीं पता कि Pages आपका मॉडल है या यह एक विक्रेता मॉडल है। उदाहरण के लिए इसके अंदर एक्सेसर हो सकता है:

public function getPageDescAttribute($value) 
{ 
    return htmlspecialchars($value); 
} 

और फिर जब तुम मिल page_desc विशेषता htmlspecialchars साथ page_desc संशोधित कर दिया जाएगा। तो यदि आप सुनिश्चित हैं कि डेटाबेस में डेटा कच्चे एचटीएमएल (बच निकला नहीं गया है) के साथ आपको Pages कक्षा

+0

अब परीक्षण करें –

-3

{{html_entity_decode ($ post-> content())}} को मेरे लिए लार्वेल 4.0 के साथ समस्या को सहेजना चाहिए । अब मेरी एचटीएमएल सामग्री का अर्थ यह है कि इसे चाहिए।

+0

हां, यह समाधान वास्तव में लार्वेल 4 के लिए काम करता है - शायद कोई एल 4 के लिए बेहतर समाधान जानता है? –

+0

चूंकि हम लार्वेल का उपयोग कर रहे हैं, इसलिए हमें {!! !!} जो लैरवेल वाक्यविन्यास का पालन करता है। – Nick

88

{{ }} से {!! !!} पर अपना वाक्यविन्यास बदलें।

अल्फा जैसा कि ऊपर एक टिप्पणी में कहा (नहीं एक जवाब तो मैंने सोचा कि मैं पोस्ट चाहते हैं), Laravel 5 में, {{ }} (पहले गैर भाग निकले उत्पादन सिंटेक्स) {!! !!} बदल गया है।{{ }} को {!! !!} के साथ बदलें और इसे काम करना चाहिए।

+0

मेरे मामले में हल! – fpauer

+1

काम किया! धन्यवाद @ एल्फा –

+0

मेरे लिए काम किया !!! धन्यवाद @ इवान टॉपोलिक – Raham

7

में सामग्री शामिल करें {! !}।

10

इस टैग का उपयोग करें {!! विवरण पाठ !!}

+0

यह उत्तर मेरे लिए Laravel 5.2 में काम किया। समस्या पर काम करने के दौरान, मैंने यह भी पाया कि रोशनी/समर्थन/helpers.php :: 52 9 रन 'htmlentities()' यदि आप इस वाक्यविन्यास का उपयोग नहीं करते हैं: '{!! !!} '। – PapaHotelPapa

1

मुझे एक ही समस्या थी। ऊपर दिए गए उत्तरों के लिए धन्यवाद, मैंने अपना मुद्दा हल किया। वहाँ एक ही समस्या का सामना करना पड़ लोग हैं, तो यहां उसे हल करने के लिए दो तरीका है:

  • आप उपयोग कर सकते हैं {!! $news->body !!}
  • आप पारंपरिक php openning (यह अनुशंसित नहीं है) की तरह उपयोग कर सकते हैं: <?php echo $string ?>

मुझे उम्मीद है कि यह मदद करता है।

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