Страницы

Поиск по вопросам

воскресенье, 1 декабря 2019 г.

В чем отличие @yield от @show?

#laravel


В чем отличие @yield от @show разве они не выполняют одно и то же действие?
    


Ответы

Ответ 1



Нет. У этих директив разное назначение. @show, как и @endsection, используется для обозначения конца секции. @show выводит содержимое секции на экран, сразу после объявления секции. @endsection не делает ничего, кроме обозначения конца объявления секции. @show и @endsection не могут существовать без предшествующей директивы @section. @yield используется для вывода содержимого секции с определенным именем. Эта директива вполне может существовать без предшествующей директивы @section, если та, например, была объявлена в одном из дочерних шаблонов. Возможен вариант использования @yield, когда секция с указанным именем вообще не была объявлена, тогда надо передать в нее второй параметр, который будет служить значением по умолчанию. Пример шаблона: Мое приложение @yield('non-existent-section', 'работает') @section('displayed-content') Это содержимое секции, которое будет сразу выведено на экран. @show @section('declared-content') Это содержимое секции, для вывода которого надо использовать @yield @endsection
@yield('declared-content')
Пример итогового файла: Мое приложение работает Это содержимое секции, которое будет сразу выведено на экран.
Это содержимое секции, для вывода которого надо использовать @yield
Подробнее в документации В чем отличие @endsection от @stop Как говорится в этом сообщении на SO: Существует авторитетный ответ от Taylor Otwell Директива @endsection стала @stop в L4, а @yieldSection стала @show. Оригинальная цитата Taylor Otwell на github. В Laravel 5 можно использовать любой из вариантов: @endsection или @stop. Отличий в функционале нет, это одно и то же.

Комментариев нет:

Отправить комментарий