阅读(3272) (6)

Laravel 8 编写验证逻辑

2021-06-25 11:18:18 更新

现在我们开始在 store 方法中编写用来验证新的博客文章的逻辑代码。为此,我们将使用 IlluminateHttpRequest 类提供的 validate 方法。如果验证通过,你的代码会继续正常运行。如果验证失败,则会抛出异常,并自动将对应的错误响应返回给用户。 在传统 HTTP 请求下,会生成一个重定向响应, 而对于 AJAX 请求则会发送 JSON 响应。

为了深入理解 validate 方法,让我们接着回到 store 方法中:

/**
 * 存储一篇新的博客文章
 *
 * @param  Request  $request
 * @return Response
 */
public function store(Request $request)
{
    $validatedData = $request->validate([
        'title' => 'required|unique:posts|max:255',
        'body' => 'required',
    ]);

    // 博客文章验证通过...
} 

如你所见,我们将所需的验证规则传递至 validate 方法中。另外再提醒一次,如果验证失败,会自动生成一个对应的响应。如果验证通过,那我们的控制器会继续正常运行。

或者,验证规则可以使用数组而不是单个 | 分隔的字符串:

$validatedData = $request->validate([
    'title' => ['required', 'unique:posts', 'max:255'],
    'body' => ['required'],
]); 

你可以使用 validateWithBag 方法来验证请求,并将所有错误信息储存在一个 命名错误信息包 中:

$validatedData = $request->validateWithBag('post', [
    'title' => ['required', 'unique:posts', 'max:255'],
    'body' => ['required'],
]);