web-dev-qa-db-ja.com

ブレードテンプレートが存在する場合にのみ含めるにはどうすればよいですか?

ブレードテンプレートを@includeする方法only存在する場合は?私はそのようなことをすることができました:

@if (File::exists('great/path/to/blade/template.blade.php'))
   @include('path.to.blade.template')
@endif

しかし、それは本当にエレガントで効率的ではありません。

私はifステートメントなしでそれを含めることができ、ファイルがここにない場合はエラーをキャッチして非表示にすることができますが、それは野蛮ではないとしても少し汚いです。

何が素晴らしいのでしょうか?

@includeifexists('path.to.blade.template')

(疑似コードですが、このブレードコマンドは存在しません)

14
Cedric

View::exists()を使用して、ビューが存在するかどうかを確認できます。

@if(View::exists('path.to.view'))
    @include('path.to.view')
@endif

または、ブレードを拡張して新しいディレクティブを追加できます

Blade::directive('includeIfExists', function($view) {

});

ここで公式ドキュメントをチェックしてください: http://laravel.com/docs/5.1/blade#extending-blade

21
yangqi

同様の問題がありました。この目的のために_@includeIf_ブレードディレクティブがあることがわかります。

単に@includeIf('path.to.blade.template')

23
BARNZ

コントローラで必要な場合( このドキュメントから ):

ビューが存在するかどうかの判断ビューが存在するかどうかを判断する必要がある場合は、引数なしでビューヘルパーを呼び出した後で、existsメソッドを使用できます。このメソッドは、ビューがディスクに存在する場合にtrueを返します。

use Illuminate\Support\Facades\View;

if (View::exists('emails.customer')) {
    \\
}
0
user2075039