2017-11-16 6 views
0

更新これは私がここに奇妙なものを持っている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 

出力

理論

これらのテストの実行中に気付いた非常に興味深いケースの1つは、@sectionディレクティブ内で{{$ foo}}変数を使用し、それを@sectionディレクティブの外に移動して2つの異なる出力につなげたことでした。

{{$foo}} 

@section('content') 
    {{$foo}} 
@endsection 

本の出力は...

結論 Laravel 5.2またはLaravel 5.3でこのバグを修正する方法を知っている人はいますか?現在、L5.4へのアップグレードは、私たちのクライアントのためのオプションではありません。

誰もが賢いことがあると思うかもしれないと思うことがありますか?

答えて

0

私はこの問題が他の場所にあると信じています。あなたはおそらくあなたが書いた以上のことをしています。

サンプルコントローラメソッドコンテンツ

return view('test', ['email' => '[email protected]']; 

サンプルビュー:

Email is: {{ $email }} 

結果は次のとおりです。

Email is: [email protected] 

ので、私はあなたが書いた以上の何かをやっていると信じています。

+0

マルチン、上記の私の更新を参照してください。さらに調査すると、本当にバグかもしれないようです。 – Panda4Man

+1

最初にLaravelのバージョンについて書きました。おそらくバグですが、古いバージョンはこれ以上サポートされません。今では5.5 LTSを使用しています。常に最新のバージョンまたは少なくとも最新のLTSを使用することをお勧めします –

0

これは可能ではないので、何か非常にうんざりしています。 Laravelは、の前にすべての変数を解釈するの前にブレード命令を処理します。

私は非常に単純な例でテスト:の

Route::get('test', function() { 
    $foo = '[email protected]'; 

    return view('test')->with('foo', $foo); 
}); 

とブレードテンプレート:

{{ $foo }} 

とそれだけで正常に動作します。 @parentは解釈されません。

+0

さらにデバッグするには、 'storage/framework/views'のどこかにキャッシュされるBlade-interpretedコードを見て、出力されているソースコード。 – ceejayoz

+1

あなたは正しいです、何か非常にねじれが起こっている必要があります。私はちょうど真新しい、ベアボーンのブレードテンプレートで同じテストを実行しようとし、それが適切にレンダリングされました。助けてくれてありがとう。 – Panda4Man

+0

上記の私の更新を参照してください。さらに調査すると、本当にバグかもしれないようです。 – Panda4Man

関連する問題