2013-05-17 14 views
7

生のHTMLタグをラベルに貼り付ける簡単な方法はありますか?私はこれがあります。laravel 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> 

しかしタグEMは解釈されません。私が欲しいのです:

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

何正しいHTML出力をすべきですか? –

+0

これは正しいHTML入力ですが、入力の近くのサイトでは、「ファーストネーム*」ではありません。 –

+1

生成されるHTMLは実際にエンティティエンコードされています。 >ファーストネーム<em> * </em > 'であり、上記のとおりではありません。 – Jason

答えて

10

macrosprintfを使用するには、再復号よりもはるかに高速です:

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

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

これを一度しか必要とせず、すばやく簡単なソリューションが必要な場合は、インラインで行うこともできます。 )、 'terms and conditions'に同意します。}} ' – neilcrookes

+0

はい、{{sprintf(form :: label( 'tncs'、 '%s'、array( 'class' => 'コントロールラベルtncs-label' 、それはうまくいくでしょうが、1つの使用方法でさえも、それを引き出すのはまだ良いです。それは醜く、理解することは難しいです。 –

+0

私は複数のビューでそれを使用したい場合は、この "ウィジェット"の適切な場所はどこですか?私はそれを必要とするたびにではなく、一度だけ含めることを好みます。 –

-1

がそれを手に入れた、あなたのラベルをフォーマットするためにhtmlentitiesを使用する電子()ヘルパー関数を()を使用しています、これは&amp;lt;em&amp;gt;*&amp;lt;/em&amp;gt;にあなたのタグに変換されます。

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

しかし、この理想からかけ離れ:

迅速で(非常に)汚れた修正はHelpers.phpへの最初の呼び出しの前に、あなたのstart.phpまたはいくつかの他の場所にこれを追加することです。

0

フォームの入力とラベルにraw HTMLを使用することがよくあります。これは、必須とプレースホルダなどのhtml5属性を読みやすく使いやすくなっています。このフォームは、古い入力を取り込むことを可能にする、Input :: oldで生のhtmlを使用する良い例です。 https://github.com/Zizaco/confide/blob/master/src/views/login.blade.php

-2

私はForm :: label($ name、$ value、$ attributes、$ escape_html)はhtmlをエスケープしないかどうかを示す第4のパラメータを取ると考えています。デフォルトはtrueです。したがって、期待される結果が斜体*の場合は、falseを4番目のパラメータとして渡します。

+1

Form :: labelのAPIドキュメントを見ると、htmlをエスケープする4番目のパラメータがないことがわかります。 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を追加しようとしているのは、私が追加クラス、 'required-input'(または何か)。

それから私は、次のCSSルール

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

あなたはEMはスクリーンリーダーのための>/<EM> * <を持っている必要がされていない限り、これは動作しますがあります。しかし、入力に必要なフラグを追加することはできます。

11

使用HTML ::デコード():

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

関連する問題