📜  laravel 请求创建和更新的验证规则 - PHP (1)

📅  最后修改于: 2023-12-03 15:17:16.318000             🧑  作者: Mango

Laravel 请求创建和更新的验证规则

在 Laravel 中,我们可以使用请求验证器来验证用户输入的数据。这是一种非常有用的功能,因为它能够减少应用程序中的错误数据,并且可以保证应用程序的安全性。

创建验证规则

Laravel 提供了一个 make 方法来创建一个验证规则的实例。在这个实例中,我们可以定义要验证的字段、验证规则和对应的消息。

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;

class UserController extends Controller
{
    public function store(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'name' => 'required|string|max:255',
            'email' => 'required|email|unique:users,email|max:255',
            'password' => 'required|string|min:8',
        ], [
            'name.required' => '请填写用户名',
            'name.string' => '用户名必须为字符串',
            'name.max' => '用户名最大长度为255个字符',
            'email.required' => '请填写邮箱',
            'email.email' => '请填写正确的邮箱格式',
            'email.unique' => '该邮箱已被注册',
            'email.max' => '邮箱最大长度为255个字符',
            'password.required' => '请填写密码',
            'password.string' => '密码必须为字符串',
            'password.min' => '密码最小长度为8个字符',
        ]);

        if ($validator->fails()) {
            return response()->json([
                'status' => false,
                'message' => $validator->errors()->first(),
            ]);
        }

        ...
    }
}

在上面的代码中,我们使用了 Validator Facade 来创建一个验证器实例,使用了 make 方法将要验证的字段、验证规则和对应的消息传入。如果验证失败,我们会将第一个错误消息返回给客户端。

更新验证规则

当我们需要更新一个模型的属性时,也需要对输入的数据进行验证。在 Laravel 中,我们可以使用 update 方法来更新模型,而验证规则则可以和创建时的一样,使用 make 方法创建一个实例即可。

class UserController extends Controller
{
    public function update(Request $request, User $user)
    {
        $validator = Validator::make($request->all(), [
            'name' => 'required|string|max:255',
            'email' => 'required|email|unique:users,email,' . $user->id . '|max:255',
            'password' => 'sometimes|string|min:8',
        ], [
            'name.required' => '请填写用户名',
            'name.string' => '用户名必须为字符串',
            'name.max' => '用户名最大长度为255个字符',
            'email.required' => '请填写邮箱',
            'email.email' => '请填写正确的邮箱格式',
            'email.unique' => '该邮箱已被注册',
            'email.max' => '邮箱最大长度为255个字符',
            'password.string' => '密码必须为字符串',
            'password.min' => '密码最小长度为8个字符',
        ]);

        if ($validator->fails()) {
            return response()->json([
                'status' => false,
                'message' => $validator->errors()->first(),
            ]);
        }

        $user->fill($request->only(['name', 'email', 'password']))->save();

        ...
    }
}

在更新时,我们在邮箱验证规则中使用了 unique 规则,并且添加了一个条件,防止更新时与其他用户的邮箱发生冲突。在密码验证规则中,我们使用了 sometimes 规则,这意味着用户更新时可以不填写密码。

总结

Laravel 提供了很强大的请求验证器,使我们可以轻松地验证用户输入的数据。在使用 make 方法创建验证规则实例时,我们可以通过指定要验证的字段、验证规则以及对应的消息来设置验证规则。在更新数据时,我们可以使用 unique 规则来防止数据冲突,并使用 sometimes 规则来实现可选字段验证。