checkboxのPOST処理/validation / Laravel

LaravelでcheckboxのPOST処理と、そのValidation方法を解説していきます。

①:checkboxのPOST処理

name、valueをcheckboxに応じた書き方で処理していきます。

<section class="">
    @foreach($tags as $tag)
        <label class="inline-flex items-center mt-3">
            <input type="checkbox" name="tag_id[]" value="{{$tag->id}}" class="form-checkbox"><span>{{$タグ名称}}</span>
        </label>
    @endforeach
</section>

checkboxで使われる処理、name=”tag_id[]”

tagを3つ選択して、POSTした場合下記のようなデータがrequestに含まれます。

value=”{{$tag->id}}”で指定したtag_idが配列に含まれます。

    #parameters: array:2 [▼
    "_token" => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    "tag_id" => array:3 [▼
      0 => "14"
      1 => "15"
      2 => "16"
    ]

②:配列で受けたPOSTに対してValidation

適用したいルール
・データが空ではない (tag_id がデータ有り)
・tag_idが数字である (value=”{{$tag->id}}”)

下記のようなvalidationメソッドの記述をします。

        $validated = $request->validate([
            'tag_id' => 'required',
            'tag_id.*' => 'required|integer',            
        ]);

ポイントはこちらです。

'tag_id.*' => 'required|integer',            

“tag_id” => array:3 [▼ に含まれる 配列の中身に対してvalidationを適用しています。

Laravelのvalidation機能で画像比率を指定する方法

Laravelはvalidation機能が独自に組み込まれております。
様々な種類のvalidationを設定することが可能です。

今回は、画像比率を指定する方法をご紹介します。
プロフィール画像は1:1の画像に制限したい。などといったvalidationが可能です。

やりかたは非常にシンプルです。

 public function post(Request $request)
{
    $validatedData = $request->validate([
        'title' => 'required|unique:posts|max:255',
        'body' => 'required',
        'image' => 'required|dimensions:ratio=1/1',
    ]);

    /post内容/

} 
dimensions:ratio=1/1

のように、dimensions:ratio=〇〇
〇〇に指定したい比率を追加して下さい。