如果@yield为空,则显示视图而不是文本

时间:2014-03-29 20:40:35

标签: php laravel

使用blade,如果没有@yield的数据,可以显示默认值,如下所示:

@yield('section', 'Default Content');

但我真的想要显示一个视图而不是字符串文本。原因是我想将@yield导航菜单放入布局中。大多数情况下导航菜单都是完全相同的,所以某种默认选项在这里应该是最佳的,但我想要一种覆盖菜单的方法。

有可能实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

要检查该部分是否存在,您可以使用:

array_key_exists('fooSection', View::getSections())

并检查该部分是否为空,您可以使用:

empty(View::getSections()['fooSection'])

例如:

@section('fooSection')
Foo
@stop

@section('barSection')
Bar
@stop

<h1>If Section Exists</h1>
@if (array_key_exists('fooSection', View::getSections()))
@yield('fooSection')
@else
@yield('barSection')
@endif

<h1>If Section isn't Empty</h1>
@if (!empty(View::getSections()['fooSection']))
@yield('fooSection')
@else
@yield('barSection')
@endif

希望这有帮助。