内容へ移動
ゆーものメモ帳
ユーザ用ツール
管理
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
プログラム言語:php:laravel:バリデーション:withvalidatorを使ったバリデーションの追加:配列の画像を1件はアップロードを必須にしたい場合
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== 【Laravel】配列の画像を1件はアップロードを必須にしたい場合 ====== 画像と名前などがセットとなって、配列で複数送られて来る場合。 <code:php> // イメージ $_POST['img'] = [ 0 => [ 'name' => 'あいうえお', 'file' => 画像ファイルデータ_0 ], 1 => [ 'name' => 'かきくけこ', 'file' => 画像ファイルデータ_1 ], ]; </code> 最低1枚は画像が選択されているように、バリデーションを行いたくても、以下の指定では名前だけ入力されていた場合、必須チェックをスルーしてしまいます。 <code:php> return [ 'img' => 'required:array', ], </code> その場合、以下のように withValidator を使うことで解決できました。 <code:php> public function rules() { return [ 'img.*.name' => [ 'required_with:img.*.file', 'string', 'max:50', ], 'img.*.file' => [ 'file', 'image', 'mimes:jpeg,jpg,png,gif', 'max_mb:10', ], ]; } public function withValidator($validator) { $validator->after(function ($validator) { $file_count = 0; foreach ($this->file('img') as $key => $img) { if (isset($img['file']) && is_uploaded_file($img['file'])) { $file_count ++; } } if ($file_count === 0) { $validator->errors()->add('img', '画像は必須です。'); } }); } </code>
プログラム言語/php/laravel/バリデーション/withvalidatorを使ったバリデーションの追加/配列の画像を1件はアップロードを必須にしたい場合.txt
· 最終更新: 2021/12/16 11:31 by
humolife
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ