Laravel Blade:如何从父视图中访问嵌套部分视图中的变量

6

我的父视图长这样:
show.blade.php

@include('inquiries.partials.inquiries')

它使用以下部分:
inquiries.blade.php
<ul>
    @foreach($inquiry as $key => $item)
        <li>
            @include('inquiries.partials.inquiry')
        </li>
    @endforeach
</ul>

这里使用了另一个部分:
inquiry.blade.php

<div class="row">
    <div class="col-xs-10">
        <div class="data"> ... </div>
    </div>
    <div class="col-xs-2 text-right">
         @yield('inquiry.toolbar', '')
    </div>
</div>

show.blade.php 中,我希望为 inquiry.blade.php 定义 inquiry.toolbar 部分,但是我需要访问来自 inquiries.blade.php 文件的 $key 变量,就像这样:
@include('inquiries.partials.inquiries')

@section('inquiry.toolbar')
{!! button_delete([
    'route' => ['inquiries.items.destroy', $key]
]) !!}
@stop

然而,上述代码无法正常工作(我得到了“Undefined variable: key”错误)。
这可能吗?
1个回答

4
您可以在包含视图时传递数据,如下所示:
<ul>
    @foreach($inquiry as $key => $item)
        <li>
            @include('inquiries.partials.inquiry', compact('key'))
        </li>
    @endforeach
</ul>

这将在您的视图中可用。

查看文档获取更多信息。


这将变量传递给子视图。但是我想使用传递给子视图的数据覆盖父视图中的部分。 - Mike
1
@Mike 在这种情况下,您应该检查此答案。您可以在控制器上使用 view()->share() 来使一个变量(例如 $inquiry)在所有视图中可用。这可能不完全是您想要的方式,但它有效。 - Ravan Scafi
谢谢您的帮助,这正是我所需要的。 - Mike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接