下記のような配列型のname属性のリクエストが送られてきたとき、
staff_tag_idがnullではない値が10個を超えるときはバリデーションエラーを発生させたいのです。(タグを10個より多く登録できないようにしたい)
laravelのformrequestではこのような条件付をしたいときはどのような記述をしたらいいのでしょうか??
formrequestクラス内のwithValidator()内にsometimes()を記述し
その中でnullでないものをカウントするロジックを記述しましたがうまく動作しませんでした。
rules()内の記述で対応はできないのでしょうか?
対応方法を教えて下さい。
public function withValidator(\Illuminate\Contracts\Validation\Validator $validator) { $validator->sometimes('staff_staff_tag', 'required', function() { $staff_staff_tags = $this->input('staff_staff_tag'); $tag_count = 0; foreach ($staff_staff_tags as $staff_staff_tag) { if(!empty($staff_staff_tag['staff_tag_id'])) $tag_count++; } return ($tag_count <= 10) ? true : false; // return false; }); } public function rules() { return [ 'staff_staff_tag' => 'required', ]; } public function messages() { return [ 'staff_staff_tag.required' => '指定できるタグは最大10コまでです。', ]; }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。