Laravelでバリデーションを追加して、2つの文字列のみを受け入れる方法


  1. ルールクラスを作成する方法 まず、カスタムのバリデーションルールクラスを作成します。以下のコマンドを使用して、新しいルールクラスを作成できます。
php artisan make:rule TwoStrings

上記のコマンドを実行すると、app/Rules/TwoStrings.phpというファイルが作成されます。このファイルを開き、以下のようにpassesメソッドを実装します。

public function passes($attribute, $value)
{
    // 入力値が2つの文字列かどうかをチェックするロジックを実装します
    return is_array($value) && count($value) === 2 && is_string($value[0]) && is_string($value[1]);
}
  1. バリデーションルールの定義と使用方法 次に、作成したバリデーションルールを定義し、使用します。以下の手順に従ってください。

まず、resources/lang/ja/validation.phpファイルを開き、以下のように新しいエントリを追加します。

'custom' => [
    'two_strings' => '2つの文字列を指定してください。',
],

次に、バリデーションルールを定義します。app/Http/Requestsディレクトリにある適切なフォームリクエストクラスを開き、rulesメソッドを以下のように更新します。

use App\Rules\TwoStrings;
public function rules()
{
    return [
        'strings' => ['required', 'array', new TwoStrings],
    ];
}

最後に、バリデーションエラーメッセージを表示するビューファイルに、以下のようにエラーメッセージを追加します。

@if ($errors->has('strings'))
    <span class="invalid-feedback" role="alert">
        <strong>{{ $errors->first('strings') }}</strong>
    </span>
@endif

これで、指定したフォームフィールドに2つの文字列以外の入力がある場合、バリデーションエラーメッセージが表示されます。

以上が、Laravelでバリデーションを追加して、2つの文字列のみを受け入れる方法です。この方法を使って、入力データを適切に検証できます。必要に応じてカスタマイズしてください。