私は単純なルールを使用して電子メールの検証を行います:
'email' => 'required|email|unique:users,email',
入力した電子メールが原始と異なる場合にのみ機能するように、オプションunique
を変更するにはどうすればよいですか?
サンプル:
フィールドemail
には、テーブルusers
からのデフォルト値が含まれます:[email protected]
次に、チェックするべきではないフォームに変更を加えずにボタンを押しますunique:users
。
それ以外の場合、[email protected]
次を使用して着信値を検証する必要があります:unique:users
。
条件チェックを使用してこれを行いました:
$validator = Validator::make($request->all(), []);
$validator->sometimes('email', 'unique:users,email', function ($input) {
return $input->email !== Auth::user()->email;
});
ここに例を見つけることができます https://laracasts.com/discuss/channels/requests/laravel-5-validation-request-how-to-handle-validation-on-update
リクエスト方法(更新または作成)に応じて複数のルールが必要になります。また、ユーザー/メールを知っている場合に失敗しないように、3番目のパラメーターをuniqueに渡すことができます。
'user.email' => 'required|email|unique:users,email,'.$user->id,
メソッドの切り替え
switch($this->method())
{
...
}