Обычно вы реализуете это таким образом, чтобы использовать тот же макет, а затем передавать другой параметр через ваш URL -> controller -> параметр включения блейда -> представление блейда.
В приведенном ниже примере показано, как можно выполнять «ленивую» загрузку (одновременно загружать только 1 вкладку) для файлов в Laravel:
// /routes/web.php
Route::get('/tabbed-page', 'TabbedPageController@index');
Route::get('/tabbed-page/:tab', 'TabbedPageController@show');
// /App/Http/Controllers/TabbedPageController.php
public function show($request, $tab) {
$data = ['title'=> 'No tab'];
if ($tab === 'tab1') {
$data = ['title' => 'I am tab 1'];
}
return view('page', [
'tab' => $tab,
'data'=> $data
]);
}
public function index($request) {
// open tab1 by default
redirect('/tabbed-page/tab1');
}
{{-- /resources/views/page.php, requested at for example /tabbed-page/tab1 --}}
<nav>
<a href="tab1" class="@if($tab === 'tab1') active @endif">Tab 1</a>
<a href="tab2" class="@if($tab === 'tab2') active @endif">Tab 2</a>
<a href="tab3" class="@if($tab === 'tab3') active @endif">Tab 3</a>
<a href="tab4" class="@if($tab === 'tab4') active @endif">Tab 4</a>
</nav>
<main>
@include($tab, $data)
</main>
{{-- /resources/views/tab1.php, tab2.php, tab3.php, etc.. --}}
<div id="tab1">
<h1>{{ $data['title] }}</h1>
Content ....
</div>