내 페이지에 두 개의 래퍼가 있습니다. 일부 사용자는 두 번째 래퍼를 볼 수있는 권한이 없습니다. @if($user->direct_mail == 0)
두 번째 래퍼를 숨 깁니다.if 문에 의해 숨겨진 변수가 여전히 페이지에서 호출되었습니다.
그러나 내가 사용자로 로그인하면 Trying to get property of non-object
이 표시됩니다. 컨트롤러가 여전히 두 번째 래퍼의 변수를 전달하고 있기 때문에 이것이 숨겨져 있지만 여전히 오류가 발생하기 때문입니다.
null
이거나 0
인 변수를 뷰에 반환하지 않을 수 있습니까? 내 이해는 콘텐츠가 if 문 안에 있었기 때문에 숨겨져 있었기 때문에 오류가 발생하지 않았습니다. 페이지에서 변수가 호출되지 않았으므로 오류가 발생하지 않습니다.
예 -
@if($user->direct_mail == 0)
<div class="wrapper">
<h2>Wrapper 1#</h2>
{{ $mailJumbo->dm_sent }}
</div>
@endif
@if($user->website == 0)
<div class="wrapper">
<h2>Wrapper 2#</h2>
{{ $website->stats }}
</div>
@endif
경로
return view('home')
->with('website', $website)
->with('mailJumbo', $mailJumbo)
오류가 존재하는 이유는 사용자가 자신의 사용자 프로파일 그게의 데이터를 가지고 있지 않기 때문에, 가변 $mailJumbo
가 null. 사용자에게 두 래퍼를 볼 수있는 올바른 권한이 있으면 오류가 존재하지 않습니다. 즉 당신이 도달 할 수없는 생각 블록에서 오류를 얻을 방법,
{{ ($website) ? $website->stats : null }}
블레이드 엔진이 나는 가정, 런타임에 그것을 구문 분석하지 않습니다 :
'@ if' 안에 null이 있는지 확인하는 조건을 추가 할 수 있습니다. 변수를 전혀 전달하지 않으면 또 다른 예외가 발생합니다. – Nevertheless
if 문 안쪽의 모든 내용은 숨겨져 있으며 페이지 원본을보고 확인할 수 있습니다. 그게 도움이 될지 모르겠습니다. – SamXronn
'direct_mail'을 가지고 있지 않은 사용자 유형에 대해서는'$ user' 변수에 실제로 클래스를 인스턴스화하지 않았을 것입니다. 컨트롤러를 돌아보고이 뷰에 매개 변수를 전달하는 방법 – RiggsFolly