🔒

[Laravel] ログアウトリンクを作る

ログアウト処理はボタンなどで POST するのが一般的だけど、ただのリンクとして実装したい場合があった。

そんなときはこうする。

<a href="#" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">ログアウト</a>
<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
    @csrf
</form>

手順は以下。

1. 見えないフォームを作る

display: none にしただけ。

+ <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
+     @csrf
+ </form>

2. そのフォームをリンクで submit できるようにする

+ <a href="#" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">ログアウト</a>
  <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
      @csrf
  </form>

これで、リンクをクリックするとログアウトするようになる。