У меня есть пользовательский макет с многоуровневым меню навигации и 2 страничный , расширяющий макет. Я хочу создать боковое навигационное меню, которое l oop через данные. Поэтому, если я создал новую навигацию по сторонам, мне не нужно портить макет.
Но проблема в том, что я не знаю, передать ли данные самому макету.
Пока я просто передаю данные на каждый контроллер страницы, который у меня есть. Я думаю, что было бы лучше, если бы я просто передавал данные в макет и вызывал любую страницу, которая расширяет макет, без повторной передачи данных на каждом контроллере страницы.
макетная пластина (user.blade. php)
<li class="nav-item has-treeview">
<a href="#" class="nav-link">
<i class="nav-icon fas fa-wifi"></i>
<p>
Hotspot Voucher
<i class="right fas fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item has-treeview">
<a href="#" class="nav-link">
<i class="far fa-circle nav-icon"></i>
<p>
Floors
<i class="right fas fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview floorlist">
@foreach ($floors as $floor)
<li class="nav-item">
<a href="{{ route('home.floor.submit', $floor->floor_id) }}" class="nav-link">
<i class="far fa-dot-circle nav-icon"></i>
<p>{{ ucwords($floor->floor_name) }}</p>
</a>
</li>
@endforeach
</ul>
</li>
</ul>
</li>
Домашняя пластина (home.blade. php)
@extends('layouts.user')
@section('content')
<!-- Content Header (Page header) -->
<div class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1 class="m-0 text-dark">Dashboard</h1>
</div><!-- /.col -->
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item">
<a href="{{ route('home') }}">Home</a>
</li>
<li class="breadcrumb-item active">Dashboard</li>
</ol>
</div><!-- /.col -->
</div><!-- /.row -->
</div><!-- /.container-fluid -->
</div>
<!-- /.content-header -->
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-body">
@component('components.who')
@endcomponent
</div>
</div>
</div>
</div>
</div>
</section>
<!-- /.content -->
@endsection
Лезвие для пола (floor.blade. php)
@extends('layouts.user')
@section('content')
<!-- Content Header (Page header) -->
<div class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1 class="m-0 text-dark">{{ ucwords($get_floor_name) }}</h1>
</div><!-- /.col -->
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item">
<a href="{{ route('home') }}">Home</a>
</li>
<li class="breadcrumb-item">
<a href="{{ route('home') }}">Dashboard</a>
</li>
<li class="breadcrumb-item active">{{ ucwords($get_floor_name) }}</li>
</ol>
</div><!-- /.col -->
</div><!-- /.row -->
</div><!-- /.container-fluid -->
</div>
<!-- /.content-header -->
<!-- Main content -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-body">
@foreach ($get_rooms as $get_room)
{{ ucwords($get_room->rooms_name) }}
@endforeach
</div>
</div>
</div>
</div>
</div>
</section>
<!-- /.content -->
@endsection
HomeController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Auth;
use App\Floor;
class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$floors = Floor::select(
'floors.id AS floor_id',
'floors.name AS floor_name'
)
->where('floors.co_id', Auth::user()->co_id)
->get();
return view('home')->with('floors', $floors);
}
}
FloorController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Auth;
use App\Floor;
use App\Room;
class FloorController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index($fid)
{
$floors = Floor::select(
'floors.id AS floor_id',
'floors.name AS floor_name'
)
->where('floors.co_id', Auth::user()->co_id)
->get();
$get_floor_details = Floor::where(['floors.co_id' => Auth::user()->co_id, 'id' => $fid])->get();
foreach($get_floor_details as $get_floor)
{
$get_floor_name = $get_floor->name;
}
$get_rooms = Room::select(
'rooms.id AS room_id',
'rooms.name AS rooms_name',
'floors.name AS get_floor_name'
)
->join('floors', 'floors.id', '=', 'rooms.floor_id')
->where(['rooms.co_id' => Auth::user()->co_id, 'rooms.floor_id' => $fid])
->get();
$data = [
'floors' => $floors,
'get_floor_name' => $get_floor_name,
'get_rooms' => $get_rooms
];
return view('floor')->with($data);
}
}
@ Решение Энди Сонга
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use View;
use Auth;
use App\Floor;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
View::composer('layouts.user', function ($view)
{
$floors = Floor::select(
'floors.id AS floor_id',
'floors.name AS floor_name'
)
->where(['co_id' => Auth::user()->co_id])
->get();
$view->with('floors', $floors);
});
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}