#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. Отличий в функционале нет, это одно и то же.
Комментариев нет:
Отправить комментарий