3

フラッシュ メッセージ内に HTML タグを含める方法はありますか。次のものがありますが、ブレードでレンダリングするとタグがエスケープされますか?

 flash()->success('Confirmation email sent to <strong>' . $user->email . '</strong>');
4

1 に答える 1

15

エスケープされていないブレードの構文を使用する必要があります

{!! $flashData !!}  // unescaped variable

それ以外の:

{{ $flashData }}  // escaped variable

エスケープされた構文は、不正な動作をするユーザーが<script>タグや JavaScript コードをアプリへの入力として提供するのを防ぐため、デフォルトで使用するのが最適です。html タグと JavaScript が削除されていない場合、これはセキュリティ上の問題である可能性があります。そのため、データが安全であると 100% 確信していない限り、データのエスケープ解除には細心の注意を払っています。

また、考えてみてください: なぜフラッシュ データに html が必要なのですか? $user->emailをそのまま送信して、それをレンダリングする方法をビューに任せることができないのはなぜですか。HTML マークアップをビューに保持します。これにより、はるかにクリーンになります。

「エスケープされていないデータの表示」については、ドキュメントhttp://laravel.com/docs/5.1/blade#displaying-data検索を参照してください。

于 2015-11-29T00:15:40.777 に答える