Лезвие Laravel @include с @yield

Возможно ли что-то подобное в лезвии Laravel?

Route::get('blade', function () {
    return view('aMainPage');
});

MainPage.blade.php

@include('molecules.blocks.banner', ['background'=> '/image.jpeg'])
   <h1>I am included</h1>
@endinclude

/views/molecules/blocks/banner.blade.php

@if($background)
<section class="banner" style="background-image:url('{{$background}}');">
@else
<section class="banner">
@endif
    <h1>Hello</h1>
    @yield() {{- notice @yield here -}}
</section>

Желаемый результат

<section class="banner" style="background-image:url('/image.jpeg');">
    <h1>Hello</h1>
    <h1>I am included</h1>
</section>

вот что выше в настоящее время делает

Фактический результат

 <section class="banner" style="background-image:url('/image.jpeg');">
    <h1>Hello</h1>
</section>


    <h1>I am included</h1>
@endinclude

person Jammer    schedule 05.04.2016    source источник
comment
У меня есть, но он не работает. Я добавлю визуализированный вывод.   -  person Jammer    schedule 06.04.2016
comment
нет такой вещи, как @endinclude, либо сделать его разделом, либо просто включить частичный   -  person Angad Dubey    schedule 06.04.2016


Ответы (1)


Конечно возможно,

молекулы/блоки/banner.blade.php

@if(isset($background))
  <section class="banner" style="background-image:url('{{$background}}');">
@else
  <section class="banner">
@endif
      <h1>Hi</h1>
      @yield('main_content')
</section>

MainPage.blade.php

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vNull</title>
</head>
<body>
@section('main_content')
    <h1>Woho</h1>
@endsection
@include('molecules.blocks.banner', ['background' => '/image.jpeg'])
</body>
</html>

Вторичное решение

молекулы/блоки/banner.blade.php

@if(isset($background))
  <section class="banner" style="background-image:url('{{$background}}');">
@else
  <section class="banner">
@endif
      <h1>Hi</h1>
      @stack('main_content')
</section>

MainPage.blade.php

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vNull</title>
</head>
<body>
@include('molecules.blocks.banner', ['background' => '/image.jpeg'])
@push('main_content')
    <h1>Woho</h1>
@endpush
</body>
</html>

Результат

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vNull</title>
</head>
<body>
  <section class="banner" style="background-image:url('/image.jpeg');">
      <h1>Hello</h1>
      <h1>Woho</h1>
  </section>
</body>
</html>
person devnull    schedule 06.04.2016
comment
Привет, @xdevnull, спасибо за ответ! Я попробовал это, и это выглядит многообещающе, но я пытаюсь создать «компонент многократного использования», где я могу использовать его более одного раза в одном и том же файле. Знаете ли вы, возможно ли это в лезвии. - person Jammer; 06.04.2016
comment
Привет @Jammer В таком случае @include, @stack сделают эту работу. Но пусть родитель визуализирует дочерний элемент, а не наоборот, как ваш вопрос, потому что, кажется, трудно следовать, если у вас очень большие файлы. См. этот небольшой пример laravel.io/bin/6LPyv. - person devnull; 06.04.2016