2017-10-13 7 views
0

기본적으로 나는 존재하는 경우에만 블레이드 템플릿을 @extend하고 다른 템플릿을 확장하지 않을 경우 @ 싶습니다. @if @endif 블록 사용과 관련하여 스택 오버 플로우 해답이 몇 가지 있지만, @extend가 아닌 파일을 @ 포함하는 경우에만 작동합니다. 이상적으로 이와 같이 작동하지만 작동하지 않습니다.블레이드 템플릿이있는 경우에만 확장하는 방법은 무엇입니까?

@if(some_condition == true) 
    @extends('one') 
@else 
    @extends('two') 
@endif 

유일한 방법은 블레이드 지시문을 사용하는 경우 예제를 제공해 주시겠습니까? 고맙습니다!

@extends($somecondition == true ? 'one' : 'two') 
+1

파일이 PHP로 존재하는지 확인할 수 있습니다. 'file_exists ($ filename)'. 나는 이것을 확인하는 Laravel의 방법이 존재하는지 모르겠다. –

+0

나는 비슷한 것을했지만 @extends를 사용하기보다는 @include ('page')'를 사용하고 페이지 파일 내에 @extends를 넣어야했다. – Option

답변

1

과 같이 그 일을 시도 다음과 같이 확장하면됩니다.

@php 

$view = ''; 

if (some_condition == true) { 
    $view = 'one'; 
} else { 
     $view = 'two'; 
} 

@endphp 

... 

@extends($view) 

대한 추가 정보를 원하시면

https://laravel.com/docs/5.5/blade#php

+0

매력 작품처럼 - 고마워요! –

0
@if(file_exists('path to file one')) 
    @extends('one') 
@else 
    @extends('two') 
@endif 
0

당신이로드 할 전망의 이름을 정의하는 조건을 사용할 수 있습니다 view:exists

@if(View::exists('path.to.view.one')) 
    @extends('one') 
@else 
    @extends('two') 
@endif 
0

을 사용할 수 :

0

당신은 View::exists

@if (View::exists('one')) 
    @extends('one') 
@else 
    @extends('two') 
@endif 

또는

file_exists() 사용할 수 있으며 경로를 사용 resource_path()이를 얻을 수

@if (file_exists(resource_path('views/one.blade.php'))) 
    @extends('one') 
@else 
    @extends('two') 
@endif 

제 경우에는 작동합니다. Laravel의 문서보기 - https://laravel.com/docs/5.5/views