2017-01-09 3 views
0

私は自分のサイトの登録を禁止するためにこのreference_id変数を使用します。基本的には、リスト(〜5-10)の値のうちの1つの値に正しく一致するreference_idを入力しないと、それらを無効にしたいと思います。同様に、電子メールフィールドにTESTだけを置くと、それはあなたを止め、「有効な電子メールではありません!」と言うのと同じように。フォーム入力がLaravelのauth(5.3)を使用して受け入れられた値と一致しない場合のブロック登録

ここで私は論理を入れますか?私は簡単に変数を作成し、

$rfid=reference_id 
$list=array(list) 
if ($rfid==$list) { 
    allow 
} 
else { 
    reject 
} 

ような何かを行うことができます。電子メールのロジックと一緒にそこに行く。しかし、あなたもそれと言うことができるように私はそれが正確に動作するか、どこの間にそれを置くだろうかわからないはずですコードの残りの部分。いずれかの方向に感謝します!

RegisterController:

protected function validator(array $data) 
{ 
    return Validator::make($data, [ 
     'name' => 'required|max:255', 
     'email' => 'required|email|max:255|unique:users', 
     'password' => 'required|min:6|confirmed', 
     'reference_id' => 'max:255', 

    ]); 
} 

/** 
* Create a new user instance after a valid registration. 
* 
* @param array $data 
* @return User 
*/ 
protected function create(array $data) 
{ 
    return User::create([ 
     'name' => $data['name'], 
     'email' => $data['email'], 
     'password' => bcrypt($data['password']), 
     'reference_id' => $data['reference_id'], 
    ]); 
} 

答えて

0

REFERENCE_IDは、アレイ

参照してください可能なLaravel検証ルールを適切に理解するために、検証

ためin_array:$array_nameを使用している場合は、

protected function validator(array $data) 
{ 
    return Validator::make($data, [ 
     'name' => 'required|max:255', 
     'email' => 'required|email|max:255|unique:users', 
     'password' => 'required|min:6|confirmed', 
     'reference_id' => 'max:255|exists:table_name', 

    ]); 
} 

を使用することができますテーブルに存在している場合: はhttps://laravel.com/docs/5.3/validation#rule-exists

希望これはあなたを助けます..

質問があれば教えてください。

+0

「あなたが使用できるテーブルにreference_idがある場合」と言うとき、受け入れられた値のリストを参照していますか?または彼らが入力した価値? – Albure

+0

すべての参照IDを持つテーブルを持っている可能性があります。使用可能な値の中に値が存在するかどうかをチェックする場合は –

+0

が存在し、配列を作成する場合は編集済みのソリューションを使用できます –

0

in検証規則を使用してください。あなたはまた、このルールのcustom validation messageを追加することができますしたい場合は

$allowedValues = implode(',', config('my.allowedKeys')); 
// Or: 
$allowedValues = implode(',', Reference::pluck('id')->toArray()); 
.... 
'reference_id' => 'max:255|in:'.$allowedValues, 

:このルールの利点は、ソースの独立と形式独立したのですです。

+0

implodeは何をしますか?そして私はかなり簡単にデータベースに新しいテーブルを作成し、それを受け入れられた値でロードすることができます。この方法を、ある意味で、クロスチェックの許容値に使用できますか? – Albure

+0

'implode()'は、配列からカンマ区切りの文字列を作成します。あなたが常にテーブルにキーを保持していると確信しているなら、このメソッドか 'exists'ルールを使うことができます。しかし、私は5つの文字列を保持するために別々のテーブルを作成しないで、代わりにそれらを設定しておきます。 –

+0

私はこの方法をよく理解していると思います。基本的には、受け入れられた値を持つ配列を作成し、 'in'検証ルールを使用して、与えられた値が受け入れられた値配列にあるかどうかを確認します。 'my.allowedKeys'は潜在的なデータベーステーブルへの参照ですか? – Albure

関連する問題