Мы новички в фреймворке sage9 / Blade и пытаемся создать шаблонную логику с ACF. С 1 блоком все работало хорошо, но когда мы добавили больше блоков, первый 1 эхосигнал повторялся 2-3 раза.
Вот как мы это сделали:
Мы используем по умолчанию layouts.app из sage9:
web/app/themes/[theme-name]/resources/views/layouts/app.blade.php
...
<div class="vy_main uk-offcanvas-content">
<header>
@yield('dispatch_banner')
</header>
<div class="wrap container" role="document">
<div class="content">
<main class="main">
@yield('dispatch') //The one we currently working on
</main>
...
В макете мы называем @yield('dispatch')
. Внутри page.blade.php мы расширяем макеты и добавляем раздел отправки.
web/app/themes/[theme-name]/resources/views/page.blade.php
@extends('layouts.app')
@section('dispatch_banner')
@layouts('banners')
{!! App::banners() !!}
@endlayouts
@endsection
@section('dispatch')
@layouts('sections')
{!! App::sections() !!} //This call a controller where we can select the correct section to display.
@endlayouts
@endsection
Внутри контроллера,
web/app/themes/[theme-name]/app/Controllers/App.php
мы возвращаем шаблон для использования и передаваем конфигурации / переменные для использования. :
public static function sections(){
...
$return .= \App\template('sections.'.$sections, $config);
}
return $return;
...
}
Мы создаем стандартный блок. Этот блок включает в себя диспетчер:
web/app/themes/[theme-name]/resources/views/sections/std.blade.php
Внутри этого шаблона мы создали новую «основу» макетов, поскольку все разделы будут иметь одинаковую базовую структуру, мы расширяем эту базу внутри шаблона и помещаем в нее содержимое раздела следующим образом:
web/app/themes/[theme-name]/resources/views/sections/std.blade.php
@extends('layouts.base')
@section('section-content')
@if ($image)
<div class="uk-grid uk-flex-middle" data-uk-grid>
<div class="{!! $class_image !!}">
<img src="{!! $image['url'] !!}" alt="{!! $image['alt'] !!}">
</div>
<div class="{!! $class_content !!}">
@endif
<div class="{!! $content_class_content !!}">
@layouts('content')
{!! App::content() !!}
@endlayouts
</div>
@if ($image)
</div>
</div>
@endif
@endsection
А вот макет
web/app/themes/[theme-name]/resources/views/layouts/base.blade.php
<section {{ (( $section_id )?'id='.$section_id:'') }} class="{!! $class_section !!}">
@if($has_container)
<div class="uk-container uk-container-{!! $container !!}" data-uk-scrollspy="cls: uk-animation-fade;">
@yield('section-content')
</div>
@else
@yield('section-content')
@endif
</section>
Как я уже сказал, все работало нормально с 1 блоком, но как только мы добавили второй блок, данные просто повторяли НО только @yield('section-content')
от базы, переменные используют внутри макета не повторяются.
Вот что мы имеем в html:
<section {{ (( $section_id )?'id='.$section_id:'') }} class="{!! $class_section !!}">
Получаем:
<section class="uk-section vy_std uk-section-primary uk-section-xlarge">
<section class="uk-section vy_accordion uk-section-transparant">
<section class="uk-section vy_std uk-section-transparant">
Где проблема с нашей логикой, и мы повторяем содержимое @yield('section-content')
вместо того, чтобы использовать правильные данные, отправляемые с контроллера?
Если это может помочь, я могу отправить весь код с контроллера, он не большой, но для меня проблема не в этом, поэтому я вырезал эту часть.
Спасибо за ваше время!