- バリデーションルールの作成:
まず、バリデーションルールを作成します。これは、
Validator
クラスのmake
メソッドを使用して行います。
$validator = Validator::make($request->all(), [
'array_field.*' => 'required|boolean'
]);
上記のコードでは、array_field
という名前の配列フィールドをバリデートしています。*
を使用することで、配列の各要素が個別にバリデートされることを指定しています。required
ルールは、要素が存在していることを確認し、boolean
ルールは、要素が真偽値であることを確認します。
- カスタムバリデーションルールの作成: 上記のバリデーションルールだけでは、少なくとも1つの値がtrueであることを確認することはできません。そのため、カスタムバリデーションルールを作成する必要があります。
app/Rules
ディレクトリにAtLeastOneTrue.php
という名前のファイルを作成し、以下のようなルールクラスを作成します。
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class AtLeastOneTrue implements Rule
{
public function passes($attribute, $value)
{
return in_array(true, $value);
}
public function message()
{
return '少なくとも1つの値はtrueである必要があります。';
}
}
- バリデーションルールの適用: 作成したカスタムバリデーションルールを使用して、配列のバリデーションルールに少なくとも1つの値がtrueであることを確認します。
$validator = Validator::make($request->all(), [
'array_field.*' => ['required', 'boolean', new \App\Rules\AtLeastOneTrue]
]);
上記のコードでは、new \App\Rules\AtLeastOneTrue
をルールの配列に追加しています。これにより、カスタムバリデーションルールが適用されます。
以上が、Laravelで配列のバリデーションルールにおいて、少なくとも1つの値がtrueである必要がある方法です。これにより、要件を満たさない場合にはバリデーションエラーメッセージが表示されるようになります。