@Flasher

Как правильно расшарить данные чере @section, @yield в blade?

У меня есть основной layouts,app:
<head>
    <meta charset="utf-8">
</head>
<body>
        @yield('news')

        @yield('other_news')
</body>
</html>


В контроллеле я подключаю вьюху и во вьюхе примерно такой @yield('news'):
@extends('layouts.app')
@section('news')
тут вывод новости
@endsection


Но а как мне сделать, чтобы на внутренней странице просмотра новости, я мог вывести контент с @yield('other_news')? Я ведь в контроллере подключаю другую вьюху, в которой также лежит, что-то типа:
@extends('layouts.app')
@section('news')
Другие новости
@endsection


Получается, что эта часть @yield('other_news') не выводится.
  • Вопрос задан
  • 480 просмотров
Решения вопроса 1
@Flasher Автор вопроса
Спасибо за помощь @den-masonov

Примерно так должны выглядеть шаблоны:

Основной layouts
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>

@yield('content')
@yield('comment')
@yield('news')

</body>
</html>


Главный шаблон от которого все будут потом наследоваться
@extends('layouts.app')

@section('content')
    {{ $content = 'Контент' }} <br>
@endsection


@section('comment')
    {{ $comment = 'Коммент' }} <br>
@endsection


@section('news')
    {{ $news = 'Новости' }} <br>
@endsection


Например внутрення страница новостей, со всеми модулями от наследуемого главного шаблона
@extends('news.index')

@section('content')
    {{ $news = 'Вложенные новости' }} <br><br>
@endsection
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Секций можно выводить несколько
@extends('layouts.app')

@section('news')
    Другие новости
@endsection

@section('other_news')
    Ещё новости
@endsection
Ответ написан
@Finsh
В body вы выводите ячейку контента, который будет доступен для всех страниц, Вам нет необходимости добавлять метки для всех страниц
Чтобы получить доступ к other_news, поступите так же как и с news, но так делать не стоит. Обычно эту ячейку называют content и используют её для всех страниц

@extends('layouts.app')
@section('news')
Новости
@endsection
@section('other_news')
Другие новости
@endsection
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы