Php 拉维刀片:你能产生一个默认的部分吗

Php 拉维刀片:你能产生一个默认的部分吗,php,laravel,laravel-blade,Php,Laravel,Laravel Blade,如果我在laravelblade中有一个名为RightSideBar.blade.php的布局,一个区域yield('content'),另一个区域yield('sidebar') 如果扩展右侧栏的视图没有部分(“侧栏”),是否有内置方式显示默认部分 我知道你可以通过默认值传递值,只是想知道是否有办法将默认值设置为部分值。是的,你可以传递默认值 看着 @yield('sidebar','defaultcontent') 当子模板没有@section('sidebar')大多数时候我们需要多行默认

如果我在
laravelblade
中有一个名为
RightSideBar.blade.php
的布局,一个区域
yield('content')
,另一个区域
yield('sidebar')

如果扩展
右侧栏的视图没有
部分(“侧栏”)
,是否有内置方式显示
默认部分


我知道你可以通过默认值传递值,只是想知道是否有办法将默认值设置为部分值。

是的,你可以传递默认值

看着

@yield('sidebar','defaultcontent')


当子模板没有
@section('sidebar')

大多数时候我们需要多行默认内容时,这基本上是一个默认输出,我们可以使用以下语法:

@section('section')
    Default content
@show
例如,我在模板文件中有:

@section('customlayout')
    <article class="content">
        @yield('content')
    </article>
@show
@节(“自定义布局”)
@产量(‘含量’)
@展示
您可以看到@show和@stop/@endsection之间的区别:上面的代码相当于下面的代码:

@section('customlayout')
    <article class="content">
        @yield('content')
    </article>
@stop

@yield('customlayout')
@节(“自定义布局”)
@产量(‘含量’)
@停止
@产量('customlayout')
在其他视图文件中,我可以仅设置内容:

@section('content')
    <p>Welcome</p>
@stop
@节(“内容”)
欢迎光临

@停止
或者我也可以设置不同的布局:

@section('content')
    <p>Welcome</p>
@stop
@section('defaultlayout')
    <div>
        @yield('content')
    </div>
@stop
@节(“内容”)
欢迎光临

@停止 @节('defaultlayout') @产量(‘含量’) @停止

@stop与@endsection等效。

尽管文档仅将默认值指定为字符串,但实际上您可以传递视图

@yield('sidebar', \View::make('defaultSidebar'))

Laravel 5.2添加了一个
@hasSection
指令,用于检查视图中是否定义了一个节。 由于某种原因,5.3或5.4文档中没有提到

@hasSection('sidebar')
    @yield('sidebar')
@else
    @yield('default-sidebar')
@endif

实际上很简单,虽然文档只将默认值指定为字符串,但实际上您可以传递一个view@yield('sidebar',\view::make('defaultSidebar'))这是不正确的。要呈现一个部分,你不能只传递一个字符串,而是按照上面@user3238419的建议,执行View::make(pathtoview)我想OP已经提到,他知道他可以按照评论中提到的那样执行。我的回答是错误的,因为我把一个例子说成是字符串而不是刀片吗?是的,因为他明确地说:“我知道你可以在默认情况下传递一个值…”,而且问题是要求一个部分字符串,而不是普通字符串。这种方法的问题是html被转义