Блейд-режим "имеет стек"

Я хочу проверить из родительского макета, что дети что-то толкают.

Точно так же, как я проверяю с 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.

Другие вопросы по тегам