2017-10-13 130 views
0

基本上我只想在刀片模板存在時擴展刀片模板,如果不是@擴展不同的模板。關於使用@if @endif塊有幾個堆棧溢出答案,但只有在@include文件而不是@extending時纔有效。理想情況是這樣的,但它不起作用:如何僅在刀片模板存在時才擴展刀片模板?

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

如果唯一的方法是使用Blade指令,可否請您提供一個示例?謝謝!

+1

你可以檢查文件是否存在使用PHP。 'file_exists($ filename)'。我不知道是否存在一個Laravel方法來檢查這個 –

+0

我自己做了類似的事情,但不是使用@extends,而是必須使用@include('page')',然後在它保存@extends的頁面文件中。 – 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