2016-08-11 6 views
2

のは、私は、このhtmlコードがあるとしましょう:Laravel - 検証 - フィールドがnullの場合必要

<input type="email" name="email"> 
<input type="password" name="password"> 

それともこれを:

<input type="hidden" name="user_id" value="1"> 

(ユーザーがログインしている場合、唯一のuser_idフィールドがしますelse - 資格情報フィールド)。

リクエストを作成するときに、ユーザーを確認する検証があります。フィールドuser_idが存在する場合(つまり、user_idがusersテーブルに存在する場合)、emailpasswordの入力を必要としません。 user_idがない場合は、emailフィールドとpasswordフィールドが必要です。言い換えれば

は、私はこのような何かをしたい:

public function rules() 
{ 
    return [ 
     'user_id' => 'exists:users,id', 
     'email'  => 'required_if_null:user_id|email|...', 
     'password' => 'required_if_null:user_id|...' 
    ]; 
} 

答えて

2

再び検証ドキュメントを読んだ後、私は解決策を見つけました。私はちょうどrequired_withoutバリデーションを使用して、反対を行う必要がありました:

public function rules() 
{ 
    return [ 
     'user_id'  => 'exists:users,id', 
     'email'   => 'required_without:user_id|email|unique:users,email', 
     'password'  => 'required_without:user_id', 
} 
関連する問題