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 中),则无需要求 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',
}
假设我有这个 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 中),则无需要求 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',
}