Блейд-режим "имеет стек"
Я хочу проверить из родительского макета, что дети что-то толкают.
Точно так же, как я проверяю с View::hasSection('section-name')
с методом hasSection. Я ищу что-то вроде: hasStack
,
Цель заключается в следующем:
@if(/* has stack 'foo' */)
<div id='foo'>
@stack('foo')
</div>
@endif
Каков наилучший способ сделать это?
[Примечание] Я имею дело с Laravel 5.4
1 ответ
Я использую Laravel 7, и для проверки нажатого контента работает следующее:
@if($__env->yieldPushContent('foo'))
<p>There is something in the "foo" stack.</p>
@endif
Вы можете поместить это в пользовательскую директиву блейда :
Blade::if('hasStack', function($stackName) {
return !empty(view()->yieldPushContent($stackName));
});
и используйте его как:
@hasStack('foo')
<p>There is something in the "foo" stack.</p>
@endhasStack
Просто будьте осторожны - часть @end не имеет CamelCase имя директивы, поэтому это @endhasStack, а не @endHasStack.