ミドルウェアを機能させたい
解決したいこと
ミドルウェアをうまく機能させたい
例)
初心者です。laravel,php,html,cssを使用しECサイトを作成する練習をしています。
だいぶ中身が足りないとは思いますが必要なコードがございましたら言ってください。
発生している問題・エラー
@if(Auth::check())→実際に発生している例の一部。
例)
以下のようにhome.blade.phpにbootstrapなのかミドルウェアなのかうまく機能していないです。そもそもこのコードが間違っているのでしょうか
該当するソースコード
Route::group(['middleware' => 'auth'],function(){
Route::get('/home', [DisplayController::class,'home'])->name('home');
});
home.blade.php
<!DOCTYPE html>
<body>
<div id="app">
<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- ブートストラップ -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>{{ config('app.name', 'ECサイト') }}</title>
<!-- Scripts -->
<script src="{{ asset('js/app.js') }}" defer></script>
<!-- Fonts -->
<link rel="dns-prefetch" href="//fonts.gstatic.com">
<link href=https://mdbootstrap.com/docs/standard/ rel="stylesheet">
<!-- Styles -->
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
<!-- @yield('stylesheet') -->
</head>
<body>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
<div id="app">
<nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm">
<div class="container">
<a class="navbar-brand" href="{{ url('/') }}">
ECサイト
</a>
</div>
<div class = "my-navbar-control">
@if(Auth::check())
<!-- <spen class = "my-navbar-item">{{ Auth::user()->name }}</spen> -->
/
<a href = "#" id="logout" class ="my-navbar-item">ログアウト</a>
<form id = "logout-form" action = "{{ route('logout') }}" method = "POST" style = "display: none;">
<!-- @csrf -->
</form>
<script>
document.getElementById('logout').addEventListener('click',function(event){
event.preventDefault();
document.getElementById('logout-form').submit();
});
</script>
@endif
<!-- @else -->
<a class = "my-navbar-item" href = "{{ route('login') }}">ログイン</a>
/
<a class = "my-navbar-item" href = "{{ route('register') }}">会員登録</a>
<!-- @endif -->
</div>
</nav>
<!-- @yield('content') -->
<!-- 1行目からここまでが外部化できていてsection('content')で呼び出せるようになっている -->
</div>
</body>
</html>
<main class="py-4 d-flex flex-column vh-100">
<div class="row justify-content-around">
<div class="col-md-4">
<div class="card">
<div class="card-header">
</div>
<div class="card-body">
<div class="d-flex justify-content-around ">
<form method="POST" action="{{ }}" class="">
<a href = "{{ route('search.date') }}">
<button type = 'button' class = 'btn btn-primary'style="width: 10vh"> 検索 </button>
</a>
<a href = "{{ route('search.date') }}">
<button type = 'button' class = 'btn btn-primary'style="width: 10vh"> 金額 </button>
</a>
<!-- @csrf -->
</form>
</div>
<div class="d-flex justify-content-around ">
<div>商品一覧</div>
</div>
<div class="product">
<img src="product1.jpg" alt="商品1">
<h2>商品名1</h2>
<p>¥1000</p>
</div>
<div class="product">
<img src="product1.jpg" alt="商品1">
<h2>商品名2</h2>
<p>¥1000</p>
</div><div class="product">
<img src="product1.jpg" alt="商品1">
<h2>商品名3</h2>
<p>¥1000</p>
</div>
<div class="product">
<img src="product1.jpg" alt="商品1">
<h2>商品名4</h2>
<p>¥1000</p>
</div>
</div>
</div>
</div>
</div>
</main>
<!-- <!-- <main class="py-4"> -->
<div class="">
<div class="position-absolute bottom-0 col-12">
<div class="card">
<!-- <div class="card-header"> -->
</div>
<div class="card-body space-around">
<div class="d-flex justify-content-around mb-auto">
<div class="col-3">
<a class="my-navbar-item" href="{{ route('home') }}">ホーム</a>
</div>
<div class="col-3">
<a class="my-navbar-item" href="{{ route('buy.goods.list') }}">購入商品一覧</a>
</div>
<div class="col-3">
<a class="my-navbar-item" href="{{ route('cart') }}">カート</a>
</div>
<div class="col-3">
<a class="my-navbar-item" href="{{ route('good.list') }}">いいね一覧</a>
</div>
</div>
</div>
</div>
</div>
<!-- <div class="col-md-4">
<div class="card">
<div class="card-header">
</div>
<div class="card-body">
<div class="card-body">
</div>
</div>
</div>
</div>
</main>
</div> -->
</body>
</html>
自分で試したこと
ミドルウェアを記載するRoute::group(['middleware' => 'auth'],function(){をweb.phpに記述していますが他に何が必要なのでしょうか。調べたサイトを参考にしたのですが、そもそも何かが足りていないような気がします。https://qiita.com/washio12/items/59f5cde23b4205973c6b
DisplayController
<?php
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
class DisplayController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Contracts\Support\Renderable
*/
public function index()
{
return view('home');
}
public function home()
{
return redirect('/');
}
}
Web.php
<?php
use App\Http\Controllers\DisplayController;
use App\Http\Controllers\RegistrationController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
// Route::get('/', function () {
// return view('home');
// });
Auth::routes();
// Route::group(['middleware' => 'auth'],function(){
Route::get('/',[DisplayController::class,'index']);
Route::get('/home',[DisplayController::class,'home'])->name('home');
Route::get('/login',[DisplayController::class,'index']);
Route::get('/search',[DisplayController::class,'search'])->name('search');
Route::get('/getPriceRanges',[DisplayController::class,'getPriceRanges']);
Auth::routes();
// Route::get('/home', [DisplayController::class,'home'])->name('home');
// });