タグ: method

  • LaravelのFormでmethodを変える方法

    LaravelのFormでmethodを変える方法

    表題の通り。

    HTTPメソッドは本来11種類あって、用途に応じてこれらを使い分ける。

    しかしHTMLのformタグでは「get」「post」の2種類のメソッドしか取り扱っていない。

    デフォルト以外のでやりとりするために、Laravelでは(?、他でも使えるかも)以下の方法でメソッドを変更することができる。

    Laravel固有の方法

    Laravel固有のタグ(?)を使う方法。

    多くの教材はこちらの方法を紹介してると思われる。

    書き方を以下に示す。

    <form action="/somewhere" method="post">
        @csrf
        @method('DELETE')
        <input type="text" name="name" id="">
        <input type="email" name="email" id="">
        <input type="password" name="password" id="">
        <button type="submit">送信する</button>
    </form>

    3行目の「@method(‘DELETE’)」のようにメソッドを@methodのあとに書くと、formタグのmethod=”xxx”を無視して、そちらが優先される。

    inputタグを使う

    自分が対応した仕事では上記の方法では何故か期待通りに動作しなかった。

    そのときに知った方法。

    Laravel以外でも動作するのかは未確認。

    <form action="/somewhere" method="post">
        @csrf
        <input type="text" name="name" id="">
        <input type="email" name="email" id="">
        <input type="password" name="password" id="">
        <button type="submit">送信する</button>
        <input type="hidden" name="_method" value="delete">
    </form>

    下から2行目にtype=”hidden”のinputタグが追加されていうのが分かるだろうか。

    この書き方でも大丈夫らしい👍