ブレードテンプレートを@includeする方法only存在する場合は?私はそのようなことをすることができました:
@if (File::exists('great/path/to/blade/template.blade.php'))
@include('path.to.blade.template')
@endif
しかし、それは本当にエレガントで効率的ではありません。
私はifステートメントなしでそれを含めることができ、ファイルがここにない場合はエラーをキャッチして非表示にすることができますが、それは野蛮ではないとしても少し汚いです。
何が素晴らしいのでしょうか?
@includeifexists('path.to.blade.template')
(疑似コードですが、このブレードコマンドは存在しません)
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
同様の問題がありました。この目的のために_@includeIf
_ブレードディレクティブがあることがわかります。
単に@includeIf('path.to.blade.template')
コントローラで必要な場合( このドキュメントから ):
ビューが存在するかどうかの判断ビューが存在するかどうかを判断する必要がある場合は、引数なしでビューヘルパーを呼び出した後で、existsメソッドを使用できます。このメソッドは、ビューがディスクに存在する場合にtrueを返します。
use Illuminate\Support\Facades\View;
if (View::exists('emails.customer')) {
\\
}