2016-01-06 6 views
7

から読むことthis SO thread私は、カスタムフォーム入力を作成するための新しいマクロを作成できることを読んだことがあります。Laravel Collectiveを使用してフォームラベルにhtmlを含めるにはどうすればよいですか?

私はLaravel開発の新品です(大きな驚き)&このような小さなもののために少し過度のようです。このような何かを持っているために、 "シンプルな" 方法はあります:

ブレードテンプレート

{!!Form::label('firstName', 'First Name<sup>*</sup>') !!} 
{!! Form::text('firstName', null, ['class'=>'required']) !!} 

HTML

<label for="firstName">First Name*</label> 
<input type="text" name="firstName" class="required"> 

それとも、これは私がちょうどHTMLを書く場合ですフォームサービスを使用して入力を作成しますか?

ご理解いただきありがとうございます。

答えて

4

Formのクラス属性は常にエスケープされます(Laravel 4にあって、Laravel Collectiveの5+サポートがあります)。したがって、HTMLは許可されません。あなたのニーズはとてもシンプルなので、単純なHTMLを書くことをお勧めします。多分

あなたがやり過ぎたい場合は、あなたのAppServiceProvider.phpでこのような何か:

Form::macro('labelWithHTML', function ($name, $html) { 
    return '<label for="'.$name.'">'.$html.'</label>'; 
}); 

その後、ブレード・テンプレートで:

{!! Form::labelWithHTML('firstName', 'First Name<sup>*</sup>') !!} 
{!! Form::text('firstName', null, ['class'=>'required']) !!} 
+3

私は個人的にラベルにプレーンHTMLを使用しますが、入力ボックスにはまだForm :: textを使用しています。それは古い入力などを追加します。 –

-1

はたぶんそれは答えるために後半ですが、あなたがこれを行うことができます:

{!! Html::decode(Form::label('firstName','FirstName: <sup>*</sup>')) !!} 
{!! Form::text('firstName', null, ['class'=>'required']) !!} 
10

これを行う簡単な方法は、

です
{!! Form::label('labelFor','labelText',[],false) !!} 

最後のパラメータは$ escape_htmlで、デフォルト値は "true"です。

+1

これは選択された答えでなければなりません。これはこれを達成するための適切な方法です。 –

+0

私はこれがより良い答えであることに同意します.4番目の引数は5.2+でしか利用できないという警告があります。 –