更新これは私がここに奇妙なものを持っているLaravel 5.2 & 5.3Laravel(5.2)Blade - 電子メールアドレスのBlade Directiveが解析されないようにするには?
のバグです。クライアントのシステム上のユーザの電子メールアドレスには、「@parent」という部分文字列を含むドメインがあります。私はプライバシーだけのために全部を含んでいません。
@parent
はBladeディレクティブなので、Laravelは@parent
を処理または無視し、ページ上のレンダリングされた電子メールアドレスから削除します。
たとえば、メールアドレスが[email protected]
であるとします。 Laravelは次のページをjohnstuff.com
に表示します。それがどのようにメールから@parent
を取り除くのか見てみましょうか?私はそれを修正しようとした何
:この同じメールアドレスが別の場所サイト上でうまく表示されて
1. {!! $user->email !!}
2. {{ e($user->email) }}
私は、これはAJAX & jQueryのように、ブレードの問題であることを知って、コンテンツをレンダリング。さらなる調査の際
UPDATE
、ブレードが@parentディレクティブを処理する方法のバグかもしれ表示されます。私は、次のバージョンのために3つの新しいLaravelプロジェクトを設定しました:5.2,5.3、および5.4。問題のプロジェクトは、FYIのLaravel 5.2プロジェクトです。
バグをテストするために上記のバージョンごとに以下のセットアップを作成しました。
ルート
Route::get('/test', function() {
$foo = '[email protected]';
return view('test')->with('foo', $foo);
});
テンプレート
ベース
<html>
<head>
<title>App Name - @yield('title')</title>
</head>
<body>
<div class="container">
@yield('content')
</div>
</body>
</html>
テストビュー
@extends('test-base')
@section('content')
{{$foo}}
@endsection
出力
- L5.2:johningstuff.org
- L5.3:johningstuff.org
- L5.4:[email protected]
理論
これらのテストの実行中に気付いた非常に興味深いケースの1つは、@sectionディレクティブ内で{{$ foo}}変数を使用し、それを@sectionディレクティブの外に移動して2つの異なる出力につなげたことでした。
例
{{$foo}}
@section('content')
{{$foo}}
@endsection
本の出力は...
- [email protected]
- johningstuff.org
結論 Laravel 5.2またはLaravel 5.3でこのバグを修正する方法を知っている人はいますか?現在、L5.4へのアップグレードは、私たちのクライアントのためのオプションではありません。
誰もが賢いことがあると思うかもしれないと思うことがありますか?
マルチン、上記の私の更新を参照してください。さらに調査すると、本当にバグかもしれないようです。 – Panda4Man
最初にLaravelのバージョンについて書きました。おそらくバグですが、古いバージョンはこれ以上サポートされません。今では5.5 LTSを使用しています。常に最新のバージョンまたは少なくとも最新のLTSを使用することをお勧めします –