【Laravel初心者】BootstrapでのFormの作り方

Laravel初学者です。
オリジナルアプリを作成しているのでその過程を記事にしています。

理解が曖昧なところも多いため、ご指摘等ありましたらご連絡いただければ幸いです。

今回はBootstrapを用いたFormのviewを作成したので記録として残します。


## 環境

|                | Version     |
|:---------------|------------:|
| PHP            | 7.4.14      |
| Laravel        | 8.24.0      |
| mysql          | 8.0.23      |
| docker         | 20.10.2     |
| docker-compose | 1.27.4      |


## 基本

[日本語リファレンス](https://getbootstrap.jp/docs/4.1/components/forms/)を確認してなんとなく基本を学びました

```PHP
<form>
  <div class="form-group">
    <label for="exampleInputEmail1">Email address</label>
    <input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Enter email">
    <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
  </div>
  <div class="form-group">
    <label for="exampleInputPassword1">Password</label>
    <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
  </div>
  <button type="submit" class="btn btn-primary">Submit</button>
</form>
```

上記は日本語リファレンスの引用です。

- formは`form-group`で囲む。そうすることで1つのグループになるのでタブキーで移動できる。
- `<input><select><textarea>`には`class="form-control"`を付与する。

```PHP
<form>
  <div class="form-group">
    <label for="exampleFormControlFile1">Example file input</label>
    <input type="file" class="form-control-file" id="exampleFormControlFile1">
  </div>
</form>
```

- 画像などのファイルの場合は`class="form-control-file"`とする。

```PHP
<form>
  <div class="form-group form-check">
    <input type="checkbox" class="form-check-input" id="exampleCheck1">
    <label class="form-check-label" for="exampleCheck1">Check me out</label>
  </div>
</form>
```

- チェックボックスは`class="form-check-input"`を付与する。


## 作成

じゃあ作ってみようと思って作成しました。

```PHP:
<div class="container mt-4">
  <div class="border p-4">
    <h1 class="h4 mb-4 font-weight-bold">新規作成</h1>

    <form action="{{ route('game.store') }}" enctype="multipart/form-data" method="POST" id="new">
      @csrf

      <fieldset class="mb-4">

        <div class="form-group">
          <label for="subject">
            ボードゲーム名
          </label>
          <input
            id="name"
            type="text"
            name="name"
            value="{{old('name')}}"
            class="form-control"
          >
        </div>

        <div class="form-group">
          <label for="subject">
            商品説明
          </label>
          <textarea
            id="new"
            name="describe"
            value="{{old('describe')}}"
            class="form-control"
            rows="8"
          >
          </textarea>
        </div>

        <div class="form-group">
          <label for="subject">
            プレイ時間
          </label>
          <input
            type="number"
            name="play_time"
            value="{{old('play_time')}}"
            class="form-control"
          >
        </div>

        <div class="form-group">
          <label for="subject">
            最小プレイ人数
          </label>
          <input
            type="number"
            name="players_minimum"
            value="{{old('players_minimum')}}"
            class="form-control"
          >
        </div>

        <div class="form-group">
          <label for="subject">
            最大プレイ人数
          </label>
          <input
            type="text"
            name="players_max"
            value="{{old('players_max')}}"
            class="form-control"
          >
        </div>

        <div class="form-group">
          <label for="exampleInputFile">
            商品画像
          </label>
          <input
            id="image"
            type='file'
            name="image"
            accept="image/png, image/jpeg"
　　　　　　　class="form-control-file"
          >
        </div>

        <button type="submit" class="btn btn-primary">
          投稿する
        </button>
  
      </fieldset>
    </form>
  </div>
</div>

```

![スクリーンショット 2021-02-09 13.41.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1051152/d7097fa9-2ff9-aa86-8e92-136157e3f673.png)

上記のようなformができました。
すんごく簡単...

ちなみに最初にfileに`class="form-control-file"`を付与せずに、
他と同じく`class="form-control"にしてしまったところ

![スクリーンショット 2021-02-08 19.53.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1051152/0340c651-8cb2-8284-3f3b-4080e6fc2e3c.png)

上記の画像のようにfileのところが枠で囲まれてしまって変になりました。
勉強になりました。

以上です。