【Laravel】カスタムバリデーションを作って配列に対してバリデーションする
完全に自分メモのn番煎じです
きっとインターネットのどこかに1番煎じの美味しい知識が落ちているだろう
この間、カスタムバリデーションで悩んでいたら助けてもらったので
忘れないようにメモします
カスタムバリデーションを作る
神Qiitaでした
一旦ここ通りにやればカスタムバリデーションはできる
配列に対してバリデーションをする
配列の要素の合計値が10なるようにバリデーションするルールを作る
CustomValidatorは
class CustomValidator extends \Illuminate\Validation\Validator
{
public function validateIsSumTen($attribute, $array_value, $parameters)
{
$sum = collect($array_value)->sum();
return $sum === 10;
}
で、詰まっていたのがこれ Requestクラスのココ
public function rules() { return [ 'hoges' => 'array|is_sum_ten' ]; }
本来配列の値全部に対してバリデーションをかけるときは
hoge.*
と記述するところを
配列の要素をまたいでバリデーションをするときは
hoge
とする(実装していてココにハマった)
そうするとpublic function validateIsSumTen($attribute, $array_value, $parameters)
の $arrayValue
に配列ごと渡されるので
あとは配列をくるくるしてバリデーションチェックすればいい