完全honaki用
悪しからず
Laravelでログアウトをこのように記載したら動かなかった
app.blade.php
<div class="my-navbar-control">
@if(Auth::check())
<span class="my-navbar-item">{{ Auth::user()->name }}</span>
/
<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>
@else
<a href="{{ route('login') }}" class="my-navbar-item">ログイン</a>
/
<a href="{{ route('register') }}" class="my-navbar-item">会員登録</a>
@endif
</div>
// ⭐️↓ここ
<script src="{{ mix('/js/app.js') }}" defer></script>
</body>
</html>
理由
app.blade.php
/js/app.js
これとJavaScriptの共存がダメだかららしい。
そして優先されるのが
素のJavaScript < /js/app.js
になるから、ログアウトができなくなってしまった。
参考
https://nebikatsu.com/7232.html/
## 今回の解決策
app.blade.php
<div class="container-fluid mb-3">
<div class="container">
<nav class="navbar">
<span class="navbar-brand mb-0 h1"></span>
<div>
@if(Auth::check())
// ⭐️↓ここ
<form id="logout-form" action="{{ route('logout')}}" method="POST">
@csrf
// ⭐️↓ここ
<input class="btn btn-danger" type="submit" value="ログアウト"></input>
</form>
@endif
</button>
</div>
</nav>
</div>
</div>
</div>
<!-- Scripts -->
<script src="{{ mix('/js/app.js') }}" defer></script>
</body>
</html>
ログアウトのためには
app.blade.php
<form id="logout-form" action="{{ route('logout')}}" method="POST">
の、action="{{ route('logout')}}"を繋げればいいので
Javascriptで繋ぐのではなく、
formタグとinputタグのsubmitでルーティングまで繋いでログアウト機能を実装した。