如果存在于 blade、laravel 5 中,则包括嵌套视图

include nested views if exists in blade, laravel 5

我正在尝试包含另一个视图(如果存在)。我有一个 main page.blade.php 应该呈现所选页面的内容。在应用程序的 back-end 中,我得到一个平面数组,其中包含所有内容(id 和名称)。所以现在如果模板存在我想渲染它但首先我需要检查模板是否确实存在。

我现在得到以下代码:

@foreach($flattenPage as $page)
    @if(file_exists('templates.'.strtolower($page['name'])))
        @include('templates.'.strtolower($page["name"]))
    @endif
@endforeach

问题是它不会通过 if 语句。 我也试过:

@if(file_exists('../templates/'.strtolower($page['name']).'.blade.php'))

当前模板是views/page/show.blade.php,我需要渲染views/templates/myContent.blade.php

如果您需要确定视图是否存在 - 您可以使用 exists 方法 (as described in the docs)

@if (view()->exists('templates.'.strtolower($page["name"])))
    @include('templates.'.strtolower($page["name"]))
@endif

从 Laravel 5.2 你也可以这样做:

@includeIf('view.name', ['some' => 'data'])

您的代码将如下所示:

@foreach($flattenPage as $page)
    @includeIf('templates.'.strtolower($page["name"]))
@endforeach