Laravel - 验证 - 如果字段为空则需要

Laravel - Validation - Require if field is null

假设我有这个 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 存在于用户 table 中),则无需要求 emailpassword 输入。如果没有 user_id,则需要 emailpassword 字段。

换句话说,我想做这样的事情:

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',
}