如何获取视图被包含在 Laravel 中的次数?

How to get how many times a view was included in Laravel?

有什么方法可以判断一个视图在 blade 中被包含了多少次?

例如:

@if(thisViewWasIncluded())
    <div ... />
@else
    <div class="..." ... />
@endif

不,通过这样一个简单的函数调用是不可能的。但是如果你有条件地包含你的视图(例如通过 includeWhen() 函数),你可以只检查条件的值。

示例:

@includeWhen($boolean, 'view.name', ['some' => 'data'])
@if($boolean)
//View included
@else
//View not included
@endif

这就是我实际设法做到这一点的方式:

我创建了一个 View Composer,它将视图名称附加到 ViewBag class,如下所示:

view()->composer('*', function ($view) {
    ViewBag::attach($view->getName());
});

然后我创建了一个 viewBag() 辅助函数,returns 包含所有附加信息的 ViewBag 实例。现在可以这样使用了:

<h1>
    Auth.Login was included: 
    {{ viewBag()->count('auth.login') }} times
</h1>

现在我还可以做以下事情:

@if(viewBag()->contains('auth.login'))
    hello
@endif