2017-11-01 8 views
1

내 블레이드보기에 isset()을 사용하려고 시도하고 값이 설정된 경우 변수 값이 포함 된 href을 표시하십시오.변수를 포함하는 href로 Laravel (5.2) isset을 어떻게 사용합니까?

URL이 {{ }} 인 HTML이 원시 HTML로 표시되고 있는데 작동하려면 사용하려면 {!! !!}을 사용하고 있습니다. 그건 이해할 만하지만 내가 필요로하는 것이 아닙니다.

{!! isset($scenario->bpmn) ? '<a href="{{ url($scenario->bpmn) }}" target="_blank"><i class="fa fa-file-image-o" aria-hidden="true"></i></a>' : '' !!} 

이 방법이 있습니까?

답변

1

우리 중첩 할 수 없습니다 블레이드는 다음 (간체) 예와 유사한 출력 문을 다시 작성하기 때문에 다른 내부 {{ ... }} 또는 {!! ... !!} 표현 : 우리가 볼 수 있듯이

echo isset($scenario->bpmn) ? '<a href="{{ url($scenario->bpmn) }}">...</a>' : ''; 

가, 블레이드하지 재귀 적으로 수행 이러한 출력 문을 렌더링합니다. 대신, 문자열 연결 사용 : 이것은 XSS를 방지하는 데 도움이 이스케이프 {!! ... !!} 출력의 사용을 피할 수

@if (isset($scenario->bpmn)) 
    <a href="{{ url($scenario->bpmn) }}">...</a> 
@endif 

: 또는

{!! isset($scenario->bpmn) ? '<a href="' . url($scenario->bpmn) . '">...</a>' : '' !!} 

을, 우리가 자리 표시 자 식을 포함 할 수 있습니다 @if 지시어를 사용 $scenario->bpmn에 사용자 입력이 포함되어 있으면 공격하십시오. 유일한 합리적인 방법은 @if 지침과 같이 사용하는 나를 위해

+0

모든 좋은 답변을 보면 읽어도 쉬울 것이다

@if (isset($scenario->bpmn)) <a href="{{ url($scenario->bpmn) }}" target="_blank"><i class="fa fa-file-image-o" aria-hidden="true"></i></a> @endif 

하지만이 후에이었다 정확하게이었다 . 감사합니다. – RushVan

0

: 당신이 파일 내용에