2017-10-13 9 views
0

基本的には、ブレードテンプレートが存在する場合のみ@extendしたい場合や、そうでない場合は別のテンプレートを拡張したいと思います。 @if @endifブロックの使用に関するスタックオーバーフローの回答がいくつかありますが、@extendではなく@includingの場合にのみ機能します。理想的には、このような何かが、それは動作しません:唯一の方法は、ブレードディレクティブを使用する場合はブレードテンプレートが存在する場合にのみ拡張する方法

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

、あなたは例を提供してくださいだろうか?ありがとうございました!

+1

ファイルが存在するかどうかを確認できます。 'file_exists($ filename)'です。私はLaravelがこれをチェックする方法が存在するかどうかわかりません –

+0

私は何か似たようなことをしましたが、@extendsを使うのではなく、@include( 'page') 'を使って、 – Option

答えて

1

このようにそれをやってみてください。

@extends($somecondition == true ? 'one' : 'two') 
+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

を使用することができますし、それを単純に拡張します。例えば、

@php 

$view = ''; 

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

@endphp 

... 

@extends($view) 

詳細

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

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

関連する問題