Laravel - 验证 - 要求if字段为空

Eli*_*hen 8 php validation require laravel

假设我有这个HTML代码:

<input type="email" name="email">
<input type="password" name="password">
Run Code Online (Sandbox Code Playgroud)

或这个:

<input type="hidden" name="user_id" value="1">
Run Code Online (Sandbox Code Playgroud)

(如果用户已登录,则仅显示该user_id字段.否则 - 凭据字段).

当我创建请求时,会有一个检查用户的验证.如果该字段user_id存在(即,如果user_id存在于users表中),则不需要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|...'
    ];
}
Run Code Online (Sandbox Code Playgroud)

Eli*_*hen 17

在再次阅读验证文档后,我找到了解决方案.我只需要做相反的事情,使用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',
}
Run Code Online (Sandbox Code Playgroud)