Laravel Blade Conditional @Yield

时间:2018-01-15 09:59:56

标签: php laravel eloquent blade

我有一个刀片视图,它使用我的模板

@extends('layouts.master')

在该模板中,如果我的子视图上的部分为真,我想显示2个按钮,而不是必须将它们包含在使用该模板的每个子视图中。

例如,我的布局(摘录)

@yield('buttons')
  <div>
    <button>BUTTON 1</button>
    <button>BUTTON 2</button>
  </div>
@show 

@yield('content)

这是我的孩子视图

@extends('layouts.master')

@section('buttons',false)

@section('content')
  <p>Hello world!</p>
@endsection

我知道它不能像我尝试的那样工作,但这样的事情可能吗?我也尝试在@if中包装@yield('buttons'),但这是不可能的,因为@yield只能在一个函数中使用。

1 个答案:

答案 0 :(得分:1)

在我的主布局中,我用@section

替换@yield
@section('buttons')

  <button>BUTTON 1</button>
  <button>BUTTON 2</button>

@endsection

在我的孩子视图中,我使用

@section('buttons','')

这取代了默认值,如果您希望保留默认值并在之前或之后放置您的其他内容,那么在您的其他内容之前或之后使用@parent,例如在我的子视图中:

@section('buttons')
   Additional content to be inserted before the buttons in my master layout.
   @parent
@endsection

<强>输出:

要在我的主布局中的按钮之前插入的其他内容。 BUTTON 1BUTTON 2

参考:https://laravel.com/docs/5.5/blade