Laravel 验证 'sometimes' 与 'present' 规则未覆盖验证中的值规则
Laravel validation 'sometimes' with 'present' rule isn't overriding the values rules in the validation
我正在尝试制作一种可用于更新用户配置文件的方法,以便用户更轻松我希望验证仅在字段中有数据时才有效,但是在尝试使用时'sometimes' 属性 和 'present' 属性,例如字符串 运行 的验证。在这个项目中我使用 vue.js 并使用 inertia.put 方法提交表单数据,我还使用 vue 开发工具 chrome 扩展来查看 inertia prop.
表单对象如下所示
form: {
name: '',
username: '',
email: '',
password: '',
password_confirmation: '',
_token : this.$page.props.csrf
}
下面是 运行 放置请求
的方法
Inertia.put(route('user.edit', this.user.id), this.form, {
onSuccess: () => {
this.user.username = this.form.username;
this.form.username = '';
this.sweetAlertSuccess('username');
}
});
这是自定义请求Laravel中的验证方法
public function rules(): array
{
return [
'name' => ['sometimes', 'present', 'string', 'max:255'],
'username' => ['sometimes', 'present', 'max:255', 'string', 'unique:users,username'],
'email' => ['sometimes', 'present', 'email', 'unique:users,email', 'max:255'],
'password' => ['sometimes', 'present', 'min:8', 'max:255', 'confirmed']
];
}
这是我看到的错误消息,我只希望消息验证其中包含数据但不符合规则的字段,如果该字段为空,那么我希望它跳过对该特定字段的验证在键控数组中。
用 nullable 替换 'present' 解决了这个问题。
public function rules(): array
{
return [
'name' => ['sometimes', 'nullable', 'string', 'max:255'],
'username' => ['sometimes','nullable', 'max:255', 'string', 'unique:users,username'],
'email' => ['sometimes', 'nullable', 'email', 'unique:users,email', 'max:255'],
'password' => ['sometimes', 'nullable','min:8', 'max:255', 'confirmed']
];
}
我正在尝试制作一种可用于更新用户配置文件的方法,以便用户更轻松我希望验证仅在字段中有数据时才有效,但是在尝试使用时'sometimes' 属性 和 'present' 属性,例如字符串 运行 的验证。在这个项目中我使用 vue.js 并使用 inertia.put 方法提交表单数据,我还使用 vue 开发工具 chrome 扩展来查看 inertia prop.
表单对象如下所示
form: {
name: '',
username: '',
email: '',
password: '',
password_confirmation: '',
_token : this.$page.props.csrf
}
下面是 运行 放置请求
的方法Inertia.put(route('user.edit', this.user.id), this.form, {
onSuccess: () => {
this.user.username = this.form.username;
this.form.username = '';
this.sweetAlertSuccess('username');
}
});
这是自定义请求Laravel中的验证方法
public function rules(): array
{
return [
'name' => ['sometimes', 'present', 'string', 'max:255'],
'username' => ['sometimes', 'present', 'max:255', 'string', 'unique:users,username'],
'email' => ['sometimes', 'present', 'email', 'unique:users,email', 'max:255'],
'password' => ['sometimes', 'present', 'min:8', 'max:255', 'confirmed']
];
}
这是我看到的错误消息,我只希望消息验证其中包含数据但不符合规则的字段,如果该字段为空,那么我希望它跳过对该特定字段的验证在键控数组中。
用 nullable 替换 'present' 解决了这个问题。
public function rules(): array
{
return [
'name' => ['sometimes', 'nullable', 'string', 'max:255'],
'username' => ['sometimes','nullable', 'max:255', 'string', 'unique:users,username'],
'email' => ['sometimes', 'nullable', 'email', 'unique:users,email', 'max:255'],
'password' => ['sometimes', 'nullable','min:8', 'max:255', 'confirmed']
];
}