Laravel 表单验证:存在时再验证 1 个改进

什么是存在时再验证呢?

假设我们的模型为Blog,含有字段title和body,表示标题和内容。那么在我们创建Blog的时候,这两个字段为必填项,当我们更新Blog的时候,只要更新有请求的值就好了。如果我们共用个验证方法,具体如下:

protected function validateRequest()
{
    return request()->validate([
        'title' => 'required',
        'body' => 'required'
    ]);
}

很明显我们新建Blog的时候这个验证方法没有问题,但是假设我们只更新title字段,由于提交请求的时候缺少body字段,因此我们的验证未通过。

解决方法

解决方法很简单,我们加入sometimes验证规则就可以了。具体如下:

protected function validateRequest()
{
    return request()->validate([
        'title' => 'sometimes|required',
        'body' => 'sometimes|required'
    ]);
}

这表示当我们请求中包含对应字段的时候才会做验证,否则会忽略。

本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 1
elesos

666

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!