2017-11-16 16 views
0

업데이트이 내가 여기 이상한 일이있어 Laravel 5.2 & 5.3Laravel (5.2) Blade - 전자 메일 주소의 Blade Directive가 구문 분석되지 않게하는 방법은 무엇입니까?

의 버그입니다. 클라이언트 시스템의 사용자 이메일 주소에는 '@parent'라는 하위 문자열이있는 도메인이 있습니다. 나는 사생활을 위해서 모든 것을 포함하지 않습니다.

@parent이 블레이드 지시문이므로 Laravel은 @parent을 처리하거나 무시하고 페이지의 렌더링 된 전자 메일 주소에서 제거합니다.

예를 들어, 이메일 주소가 [email protected]이라고 가정 해 봅니다. Laravel이 페이지에서 다음을 렌더링합니다 : johnstuff.com. 이메일에서 @parent을 어떻게 제거하는지 확인하십시오. 나는 그것을 해결하기 위해 노력했습니다 무엇

는 :

1. {!! $user->email !!} 

2. {{ e($user->email) }} 

나는 AJAX & jQuery를이 같은 이메일 주소로 내용이 다른 사이트에 잘 표시됩니다 렌더링으로이 블레이드에 문제가 있음을 알고있다. 추가 조사시

UPDATE

는,이 블레이드는 @parent 지시어를 처리하는 방법에 버그가있을 수 있습니다 나타납니다. 나는 5.2, 5.3, 5.4 버전을 위해 3 개의 새로운 Laravel 프로젝트를 만들었다. 해당 프로젝트는 Laravel 5.2 프로젝트 (FYI)입니다.

버그를 테스트하기 위해 위에서 언급 한 각 버전에 대해 다음 설치 프로그램을 만들었습니다.

경로

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> 

시험보기

,363,210
@extends('test-base') 

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

출력

이론

이 테스트를 실행하는 동안 주목할만한 한 가지 흥미로운 사례는 @section 지시문의 내부에서 {@ $ section} 지시문의 바깥 쪽을 {{$ foo}} 변수로 변경하면 두 개의 다른 출력으로 이어지는 것입니다.

{{$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 해석 코드를 살펴보고 확인하십시오 출력되는 소스 코드. – ceejayoz

+1

당신 말이 맞아요, 뭔가 매우 엉망이되어야합니다. Barebones 블레이드 템플릿에서 동일한 테스트를 실행 해 보았습니다. 제대로 렌더링되었습니다. 도와 주셔서 감사합니다. – Panda4Man

+0

위의 업데이트를 참조하십시오.추가 조사가 이루어지면 실제로 버그 일 수 있습니다. – Panda4Man