@tuxx

Как вывести несколько блоков Blade с одинаковым шаблоном?

Есть modal.blade.php с шаблоном модального окна из bootstrap 4.
<div id="@yield('modal_id')" class="modal" tabindex="-1" role="dialog">
	<div class="modal-dialog @yield('modal_dialog_styles') modal-dialog-centered" role="document">
		<div class="modal-content">
			<button type="button" class="close" data-dismiss="modal" aria-label="Закрыть"></button>
			
			<div class="modal-header">
				<h3 class="modal-title text-center">@yield('modal_title')</h3>
			</div>
			
			<div class="modal-body">
				<div class="row justify-content-center">
					<div class="col-12 col-lg-10">
						@section('modal_body')
						@overwrite
					</div>
				</div>
			</div>
			
			<div class="modal-footer row justify-content-center">
				@section('modal_footer')
				@overwrite
			</div>
		</div>
	</div>
</div>


Есть 2 файла (modal1.blade.php, modal2.blade.php) с похожим содержанием типа того что ниже:
@extends('modals.modal')

@section('modal_id', 'id-modal')
@section('modal_title', 'заголовок модального окна')

@section('modal_body')
	Контент модального окна
@overwrite


На одной из страниц делаю делаю вывод в 2 строки:
@include('modals.modal1')
@include('modals.modal2')

Но на страницу выводится 2 копии modal1 со вставленным контентом.

@overwrite нашел на laracast где такая же проблема, но не помогло
  • Вопрос задан
  • 207 просмотров
Решения вопроса 1
Используйте компоненты для решения этой задачи.

/resources/views/modal.blade.php:
<div id="{{ $modal_id }}" class="modal" tabindex="-1" role="dialog">
  <div class="modal-dialog {{ $modal_dialog_styles}} modal-dialog-centered" role="document">
    <div class="modal-content">
      <button type="button" class="close" data-dismiss="modal" aria-label="Закрыть"></button>
      
      <div class="modal-header">
        <h3 class="modal-title text-center">{{ $modal_title }}</h3>
      </div>
      
      <div class="modal-body">
        <div class="row justify-content-center">
          <div class="col-12 col-lg-10">
            {{ $slot }}
          </div>
        </div>
      </div>
      
      <div class="modal-footer row justify-content-center">
        {{ $modal_footer }}
      </div>
    </div>
  </div>
</div>


В нужно месте шаблона:
@component('modal', ['modal_id' => '1', 'modal_title' => 'Модальное окно'])
  Содержание окна
@endcomponent
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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