2013-05-17 3 views
7

क्या कोई आसान तरीका है कि कच्चे HTML टैग को लेबल करने के लिए कैसे रखा जाए? मैं इस है:लार्वेल 4: कच्चे HTML को लेबल करने के लिए कैसे सम्मिलित करें?

{{ Form::label('firstName', 'First name <em>*</em>', array('class' => 'input_tag')) }} 

और यह पैदा करता है: के रूप में यह होना चाहिए

<label class="input_tag" for="firstName">First Name &lt;em&gt;*&lt;/em&gt;</label> 

लेकिन टैग ईएम व्याख्या नहीं की है। क्या मैं चाहता हूँ है:

<label class="input_tag" for="firstName">First Name <em>*</em></label> 
+0

क्या सही HTML उत्पादन किया जाना चाहिए? –

+0

यह सही HTML इनपुट है लेकिन इनपुट के पास साइट पर "पहला नाम *" नहीं "पहला नाम *" –

+1

नोट, एचटीएमएल उत्पादित वास्तव में इकाई-एन्कोडेड है: ' 'और जैसा ऊपर बताया गया है उतना नहीं। – Jason

उत्तर

10

एक macro में sprintf का उपयोग redecoding की तुलना में बहुत तेजी से होता है:

Form::macro('rawLabel', function($name, $value = null, $options = array()) 
{ 
    $label = Form::label($name, '%s', $options); 

    return sprintf($label, $value); 
}); 
+4

यदि आपको केवल एक बार इसकी आवश्यकता है और आप एक त्वरित और आसान समाधान चाहते हैं, तो आप इसे इनलाइन भी कर सकते हैं, उदा। '{{sprintf (फॉर्म :: लेबल ('tncs', '% s', सरणी ('वर्ग' => 'नियंत्रण-लेबल tncs-label')), 'मैं terms and conditions' से सहमत हूं)}} – neilcrookes

+0

हां , जो काम करेगा, लेकिन 1 उपयोग समाधानों के लिए भी इसे निकालने के लिए अभी भी बेहतर है। यह बदसूरत और समझने में मुश्किल है। –

+0

यदि मैं इसे एकाधिक दृश्यों में उपयोग करना चाहता हूं तो इस "विजेट" के लिए उपयुक्त स्थान कहां होगा? मैं इसे केवल एक बार शामिल करना पसंद करूंगा, हर बार मुझे इसकी आवश्यकता नहीं होगी। –

-1

समझ लिया, यह htmlentities का उपयोग करता है ई() सहायक समारोह() का उपयोग कर रहा है अपने लेबल फ़ॉर्मेट करने के लिए और इस &amp;lt;em&amp;gt;*&amp;lt;/em&amp;gt; के लिए अपने टैग परिवर्तित।

त्वरित और (बहुत) गंदा ठीक Helpers.php करने के लिए पहली कॉल करने से पहले अपने start.php या कुछ अन्य जगह में जोड़ने के लिए है:

function e($value) { return $value; } 

लेकिन यह अब तक आदर्श से।

0

मैं अक्सर फॉर्म इनपुट और लेबल के लिए कच्चे HTML का उपयोग करता हूं क्योंकि मुझे पढ़ने और प्लेसहोल्डर जैसे HTML5 विशेषताओं का उपयोग करना आसान लगता है। यह फ़ॉर्म इनपुट :: पुरानी के साथ कच्चे HTML का उपयोग करने का एक अच्छा उदाहरण है जो आपको पुराने इनपुट को कैप्चर करने की अनुमति देता है। https://github.com/Zizaco/confide/blob/master/src/views/login.blade.php

-2

मेरा मानना ​​है कि फॉर्म :: लेबल ($ नाम, $ मान, $ विशेषताएँ, $ escape_html) चौथा पैरामीटर लेता है जो बताता है कि HTML से बचने के लिए नहीं। यह सच करने के लिए डिफ़ॉल्ट है। तो यदि आपका अपेक्षित परिणाम एक इटालिक * है, तो चौथे पैरामीटर के रूप में गलत हो।

+1

फॉर्म :: लेबल के लिए एपीआई दस्तावेज को देखते हुए, हम देख सकते हैं कि एचटीएमएल से बचने के लिए कोई चौथा पैरामीटर नहीं है। http://laravel.com/api/source-class-Illuminate.Html.FormBuilder.html#171-188 – ericrjones1

1

आप एक सहायक समारोह (मैक्रो) बना सकते हैं, जैसे:

HTML::macro('raw', function($htmlbuilder) { 
    return htmlspecialchars_decode($htmlbuilder); 
}); 
अपने ध्यान में रखते हुए

:

{{ HTML::raw(Form::label('input_firstname', 'Prénom <sup>*</sup>')) }} 
0

आवश्यक आदानों के लिए, बजाय लेबल में HTML जोड़ने की कोशिश कर के, मैं जोड़ने एक वर्ग, 'आवश्यक इनपुट' (या कुछ)।

तो मैं निम्नलिखित सीएसएस नियम है

label.required-input:before { 
    content: ' * '; 
    color: #f00; 
} 

यह काम करेगा जब तक आप < उन्हें > * </em स्क्रीन पाठकों के लिए > के लिए की आवश्यकता होगी, कर रहे हैं। लेकिन आप अभी भी इनपुट पर आवश्यक ध्वज जोड़ सकते हैं।

11

उपयोग एचटीएमएल :: डिकोड():

http://forums.laravel.io/viewtopic.php?id=1772

{{ HTML::decode(Form::label('firstName', 'First name <em>*</em>', array('class' => 'input_tag'))) }} 
+2

यह इस विशिष्ट उदाहरण में काम करेगा, लेकिन इस बात से अवगत रहें कि परिणामी लेबल तत्व में अन्य संस्थाएं हो सकती हैं आप डीकोड नहीं करना चाहते हैं। – Jason

+0

यह एक आकर्षण की तरह काम किया। आपको {!! का उपयोग करने की आवश्यकता हो सकती है !!} {{ }} के बजाय। पारितोषिक के लिए धन्यवाद! – cbloss793

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