LoginSignup
0
0

【Laravel】ログアウトが動かない時

Last updated at Posted at 2024-03-27

完全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でルーティングまで繋いでログアウト機能を実装した。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0