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