2016-09-23 6 views
-1

내 페이지에 두 개의 래퍼가 있습니다. 일부 사용자는 두 번째 래퍼를 볼 수있는 권한이 없습니다. @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 }} 

블레이드 엔진이 나는 가정, 런타임에 그것을 구문 분석하지 않습니다 :

+0

'@ if' 안에 null이 있는지 확인하는 조건을 추가 할 수 있습니다. 변수를 전혀 전달하지 않으면 또 다른 예외가 발생합니다. – Nevertheless

+0

if 문 안쪽의 모든 내용은 숨겨져 있으며 페이지 원본을보고 확인할 수 있습니다. 그게 도움이 될지 모르겠습니다. – SamXronn

+0

'direct_mail'을 가지고 있지 않은 사용자 유형에 대해서는'$ user' 변수에 실제로 클래스를 인스턴스화하지 않았을 것입니다. 컨트롤러를 돌아보고이 뷰에 매개 변수를 전달하는 방법 – RiggsFolly

답변

1

당신은 그 변수를 확인할 수는 없습니다 null 괄호 안에 출력입니다.

+0

이유를 설명해 주셔서 감사합니다. – SamXronn

+0

당신은 환영합니다, 그러나 그것을 위해 인터넷 검색은 성공적이지 않았습니다 ... 나는 그것을 조사하고 질문으로 돌아갈 것입니다. – Nevertheless

+0

아니요, 블레이드가 도달 할 수없는 블록을 구문 분석하지 않습니다. 즉, 조건이 true로 평가되고, 문제는 'User'객체로 나타납니다. – Nevertheless