Laravelにおけるルール検証での配列の存在チェック方法


  1. in ルールを使用する方法: Laravelのルール検証では、inルールを使用することで指定した配列内に値が存在するかどうかをチェックすることができます。以下は具体的なコード例です。

    $rules = [
       'my_array' => 'required|array|in:foo,bar,baz',
    ];

    上記の例では、my_arrayというフィールドが配列であり、その中にfoobarbazのいずれかの値が存在することを検証しています。もし存在しない値が含まれている場合、バリデーションエラーが発生します。

  2. Rule クラスを使用する方法: もう一つの方法として、Ruleクラスを使用して独自のカスタムルールを作成する方法があります。以下は具体的なコード例です。

    use Illuminate\Contracts\Validation\Rule;
    class ArrayExistsInRule implements Rule
    {
       protected $array;
       public function __construct($array)
       {
           $this->array = $array;
       }
       public function passes($attribute, $value)
       {
           return in_array($value, $this->array);
       }
       public function message()
       {
           return 'The selected value is invalid.';
       }
    }
    // ルールの使用例
    $rules = [
       'my_array' => ['required', 'array', new ArrayExistsInRule(['foo', 'bar', 'baz'])],
    ];

    上記の例では、ArrayExistsInRuleというカスタムルールを作成し、そのルールをmy_arrayフィールドに適用しています。passesメソッドでは、配列内に値が存在するかどうかをチェックし、messageメソッドではエラーメッセージを定義しています。

これらの方法を使用することで、Laravelにおいてルール検証で配列の存在チェックを行うことができます。適宜、自身の要件に合わせてカスタマイズして利用してください。