2016-12-15 6 views
1

私はサインアップフォームを持っています。これは、ユーザーの国別IDカード番号を入力として受け取ります。私の国では、ID番号は10,13または17桁です。 このタイプの検証をどのように検証できますか?laravelに特定の3種類の入力を行う検証規則がありますか?

'user_nid' => 'digits_between:10,17|required|numeric|unique:users' 

をしかし、それはそれは完全な主な要件を満たしていない17の10の間のすべての値を取る原因、それは適切な方法ではありません???: 私の検証コードは以下の通りです

今何ができますか?

+0

数値規則 – msonowal

答えて

1

あなたはregexルールを使用しようとすることができます。また、あなたがcreate custom validation ruleでき

'user_nid' => 'regex:/(?:\d{17}|\d{13}|\d{10})/', 

を。

1

regexはここでは良い方法です。

'user_nid' => 'regex:/(?:\d{17}|\d{13}|\d{10})/', 

クレジットは

+0

を削除しようとしましたが、11,12 digitsetcを渡すのでこの検証は機能しません。 –

+0

@RaunakGuptaの回答が更新されました –

1

は、カスタムバリデータを試してみてください@Alexeyに行く:

Validator::extend('check_user_nid', function($attribute, $value, $parameters, $validator) { 
    return strlent((string)$value) == 10 || strlent((string)$value) == 13 || strlent((string)$value) == 17; 
}); 

$validator = Validator::make(["user_nid"=>$request->get('user_nid')], ["user_nid"=>"required|numeric|check_user_nid|unique:users"]); 

if ($validator->passes()){ 
    //true part 
} 
else { 
    //validation does not pass 
} 
0

あなたはそれを容易に行うことができます。たとえば、ユーザーが選択したIDのタイプ(13または17)を選択する選択ボックスがあり、その値を入力の最大値と最小値に与えます。あなたのコントローラでは、入力データの長さが13か17かどうかを確認するだけです。

関連する問題