【问题标题】:include nested views if exists in blade, laravel 5如果刀片中存在嵌套视图,laravel 5
【发布时间】:2015-06-05 09:10:57
【问题描述】:

我正在尝试包含另一个视图(如果存在)。我有一个主要的page.blade.php,它应该呈现所选页面的内容。在应用程序的后端,我得到一个包含所有内容(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

【问题讨论】:

  • 可能是相对路径问题。试试file_exists(base_path('resources/views/templates/'.strtolower($page['name']).'.blade.php'))

标签: php laravel laravel-5 blade


【解决方案1】:

如果你需要判断一个视图是否存在——你可以使用exists方法(as described in the docs

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

【讨论】:

  • @LuukvandeScheur - 如果可行,请不要忘记投票并接受此答案。谢谢。
  • 嗨,对不起,我很笨。您能否演示如何将多个视图传递到上述函数中?
  • @Tomk07 - 你可以做多个@include,一个你想包含在那里的每个视图。
【解决方案2】:

从 Laravel 5.2 你也可以这样做:

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

您的代码将如下所示:

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

【讨论】:

    猜你喜欢
    • 2023-02-06
    • 2020-01-12
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 2017-01-10
    • 2021-05-11
    • 1970-01-01
    • 2020-01-18
    相关资源
    最近更新 更多