web-dev-qa-db-ja.com

Laravel Collectiveを使用してフォームラベル内にhtmlを含めるにはどうすればよいですか?

this SO thread 新しいマクロを作成してカスタムフォーム入力を作成できることを読みました。

私は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を記述してから、フォームサービスを使用して入力を作成する場合ですか?

あなたの忍耐と洞察力に感謝します。

12
Damon

これを行う簡単な方法は

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

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

25
Vati Child

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']) !!} 
5
Tomas Buteler