私がこのhtmlコードを持っているとしましょう:
<input type="email" name="email">
<input type="password" name="password">
またはこれ:
<input type="hidden" name="user_id" value="1">
(ユーザーがログインしている場合は、user_id
フィールドのみが表示されます。それ以外の場合-資格情報フィールド)。
リクエストを作成すると、ユーザーをチェックする検証があります。フィールドuser_id
が存在する場合(つまり、user_id
がusersテーブルに存在する場合)、email
およびpassword
の入力を要求する必要はありません。 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|...'
];
}
検証ドキュメントをもう一度読んだ後、解決策を見つけました。 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',
}