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

2022-08-31 00:26:23

假设我有这个html代码:

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

或者这个:

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

(如果用户已登录,则仅显示该字段。user_id

当我创建请求时,有一个验证来检查用户。如果该字段存在(即如果存在于 users 表中),则无需要求和输入。如果没有 ,则 和 字段将是必需的。user_iduser_idemailpassworduser_idemailpassword

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

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

答案 1

再次阅读验证文档后,我找到了解决方案。我只需要做相反的事情,使用验证: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',
}

答案 2

推荐